如何将(Clojure)Aleph TCP服务器绑定到TCP v4端口?

时间:2013-02-13 06:16:06

标签: tcp clojure netty

几天前我开始学习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服务器配置端口绑定吗?

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

它可能绑定到您的localhost接口,而不是您希望它使用的任何面向外部的网卡。我不知道aleph的tcp服务器是专门的,但是大多数服务器允许你指定要作为IP地址监听的接口:如果给出了v4地址,那么它会做你想要的。对于aleph,可能是:host:interface

答案 1 :(得分:1)

对于迟到的回复感到抱歉,但我在:host的最新Aleph快照中添加了对0.3.0-SNAPSHOT关键字的支持。这应该已经存在,感谢我的疏忽。