Clojure TCP客户端的测试工具

时间:2014-02-08 08:00:44

标签: sockets networking testing tcp clojure

我正在编写一个TCP客户端来连接,向繁忙网络上的节点发送消息和读取响应。我无法访问在这些节点上运行的代码,所以我必须非常仔细地雕刻我通过网络发送的TCP消息。

我已经决定从网络中收集一堆实时TCP数据并将其用作测试我的客户端的基础 - 给定这些输入参数,确保传输的二进制文件呈现为十六进制我期待看到。

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

那么:您如何建议为TCP客户端设置测试工具以验证正确的十六进制消息是否正在发布?

1 个答案:

答案 0 :(得分:3)

您应该查看aleph的tcp和gloss的协议。这是tutorialexample

一个简单的tcp echo-server可能是:

(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) 

gloss在将接收到的消息作为十六进制转储或作为值进行编码时非常有用,如果您在其中对协议进行编码并使用“decode”。