2014-02-08 110 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) 

光澤將在吐收到的消息無論是作爲十六進制轉儲或者值是非常有用的。