2014-02-08 143 views
1

我正在写一个TCP客户端来连接,发送消息并从繁忙网络上的节点读取响应。我无法访问在这些节点上运行的代码,因此我必须非常小心地雕刻通过电线发送的TCP消息。Clojure TCP客户端的测试工具

我已经决定,我要收集一堆TCP网络数据,并将其作为测试客户端的基础 - 给定这些输入参数,确保传输的二进制数据呈现为我希望看到。

在这一点上,我即将启动Wireshark并找出如何过滤我发送的数据包,或者实现一个真正简单的TCP服务器,等待连接,将传输的二进制文件吐出到磁盘(可能处理为十六进制),然后测试我发送了我期望发送的内容;这两者都不像强大或专业的解决方案。

所以:你会如何建议为TCP客户端设置一个测试工具以验证正确的十六进制消息是否出来?

回答

3

对于协议,您应该查看aleph for tcp和gloss。这里是tutorialexample

一个简单的TCP回声服务器可以是:如果你编码您的协议,并使用“解码”

(defn echo-handler [ch client-info] 
    (siphon ch ch)) ;; a simple echo handler 

(defn start-server [] (start-tcp-server 
         echo-handler 
         {:port 9997})) 
(start-server) 

光泽将在吐收到的消息无论是作为十六进制转储或者值是非常有用的。