- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 Aleph 编写一个简单的 TCP 服务器。一切正常,除了我不确定应该如何检测 channel 何时关闭。
来自documentation :
When the client closes the connection, both sides of the channel will be immediately sealed. The final message from the channel will be nil
但是,我似乎从来没有收到过这个最终的 nil
信息。如果我检查 channel ,我确实看到它已关闭。这是我的代码:
(use 'lamina.core 'aleph.tcp 'gloss.core)
(defn process-msg [ch msg]
(if (closed? ch)
(println "Channel has been closed") ;This never happens
(do-some-processing msg)))
(start-tcp-server
(fn [ch client-info]
(receive-all ch
(partial process-msg ch))
{:port 10000, :frame (string :utf-8 :delimiters ["\n"])})
我应该做些不同的事情吗?我的框架是否阻止处理 nil 消息?我可以有一个单独的线程监视我的 channel 并检查它们是否已关闭,但这似乎是一个糟糕的设计。我更愿意使用 Aleph,但现在看起来我需要使用原始 Netty 处理程序。直接使用 Netty 会很好,但如果可能的话,我更愿意使用 Aleph,因为它感觉更加地道。
最佳答案
To register a callback for when a channel is closed or drained, use (on-closed ch callback) or (on-drained ch callback), which both take a callback with zero arguments.
关于tcp - 带 Aleph 的 Clojure TCP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10414135/
我正在尝试基于 aleph 构建 RCP 服务器。它通过了所有测试,但是当用于发送或接收的字节数组变大时,字节似乎已损坏。 例如。我试图发送一个长度为 2936 的字节数组,但我在服务器上只收到了 1
我有以下代码: (ns alephtest.core (:use lamina.core aleph.tcp aleph.formats)) (defn connect
我编写了一个非常简单的广播/回显服务器,它使用带有 clojure 和 aleph 的 Web 套接字。 我花了很多时间查看 aleph 和 lamina 来源,以对这里发生的事情有一个体面的、基本的
我正在阅读 Aleph one 的《Smashing The Stack For Fun And Profit》,并到达了这个位置: overflow1.c ---------------------
我正在阅读“Smashing The Stack For Fun And Profit”,并找到了第一个使用环境变量的溢出示例: exploit2.c ------------------------
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicate: Programming Logic: Finding the smallest equation to a
在我学习 Clojure 的过程中,我目前面临着设置 websocket 通信的问题。经过许多不同的方法后,我最终使用 aleph . 我成功实现的目标: 处理新客户端连接 处理客户端断开连接 随意从
我使用 Clojure 编写了一个相对简单的 HTTP 服务器 Aleph图书馆。这不是很复杂: (ns cxpond.xmlrpc.core (:gen-class) (:require [
我从 Smashing the Stack for Fun and Profit 复制了示例 3在 Linux x86_64 上。但是我无法理解为了跳过指令应该增加到返回地址的正确字节数是多少: 0x
我的 clojure noir 应用程序在本地 100% 正常运行,并且连接到 RedisToGo 没问题。 问题是当我部署到 Heroku (git push heroku master) 时,出现
我一直在搞乱 Aleph One 的“Smash the Stack for Fun and Profit”,发现在为我的 64 位处理器编译代码时,堆栈内存没有使用通常的“sub $”分配值,%RE
我阅读有关 Clojure 的内容已经有一段时间了,我正在考虑将其作为 Node.js(我已将其用于另一个项目)的替代品。最有前途的库似乎是 Aleph/Lamina,不幸的是它没有 Node 那么多
我正在尝试使用 WARMR 在我的数据中查找频繁的关系模式;为此,我在 SWI-Prolog 中使用 ALEPH。然而,我正在努力弄清楚如何做到这一点,以及为什么我之前的尝试没有奏效。 在我继续处理我
我正在尝试使用 Aleph 编写一个简单的 TCP 服务器。一切正常,除了我不确定应该如何检测 channel 何时关闭。 来自documentation : When the client clos
我正在阅读 Aleph one 的“粉碎堆栈以获得乐趣和利润”,并到达了这个地方: jmp 0x2a # 2 bytes popl %
我正在尝试使用 aleph 连接到相互验证的 Docker 守护进程。 aleph 文档显示您可以传入 netty SSL 上下文以进行身份验证。看起来我正在正确创建 SslContext,但所有
几天前我开始学习 Clojure。我正在尝试使用一些 Aleph TCP 回显服务器示例,但我无法让服务器绑定(bind)到 tcp v4 端口。默认情况下,服务器仅绑定(bind)到 tcp v6
我是一名优秀的程序员,十分优秀!