几天前我开始学习Clojure。我尝试使用一些Aleph TCP echo服务器示例,但我无法让服务器绑定到tcp v4端口。默认情况下,服务器仅绑定到tcp v6端口。
这是我的项目文件:
(defproject clj-echo-server "0.1.0-SNAPSHOT"
:description "Echo server with Aleph"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.4.0"]
[aleph "0.3.0-beta12"]]
:main clj-echo-server.core)
服务器代码:
(ns clj-echo-server.core)
(use 'lamina.core 'aleph.tcp 'gloss.core)
(defn handler [ch client-info]
(receive-all ch
#(enqueue ch (str "You said " %))))
(start-tcp-server
handler
{:port 9000, :frame (string :utf-8 :delimiters ["\r\n"])})
我可以弄清楚我是做错了什么或如何配置绑定端口,文档对tcp端口没什么帮助。
我的操作系统是Ubuntu 12.04.2 LTS,Leiningen版本是2.0.0-preview10,所有操作都在Java 1.6.0_24 OpenJDK 64位服务器VM上运行。
有人可以告诉我如何为tcp服务器配置端口绑定吗?
感谢您的时间。
答案 0 :(得分:1)
它可能绑定到您的localhost接口,而不是您希望它使用的任何面向外部的网卡。我不知道aleph的tcp服务器是专门的,但是大多数服务器允许你指定要作为IP地址监听的接口:如果给出了v4地址,那么它会做你想要的。对于aleph,可能是:host
或:interface
?
答案 1 :(得分:1)
对于迟到的回复感到抱歉,但我在:host
的最新Aleph快照中添加了对0.3.0-SNAPSHOT
关键字的支持。这应该已经存在,感谢我的疏忽。