2014-12-21 222 views
3

我也在Arduino部分發布了這個問題,但這個問題可能是由於我對nanomsg和連接的無知而導致的,而不是一個Arduino問題。Nanomsg TCP握手

我正在嘗試與使用nanomsg在使用Arduino的端口上通過TCP進行通信的服務器進行通信。我嘗試了各種不同的配置(遠程連接到arduino並使arduino連接到服務器,使用不同的nanomsg工具)。

我能得到的Arduino,在服務器模式(運行一個非常略加修改版本的WiFiWebServer例子)成功地讀取文字我送使用cat

sudo cat texttosend > /dev/tcp/192.168.1.50/80 

然而,在所有的配置,不管是什麼文本我想用nanomsg發送,我總是得到一串相同的數字。從arduino中以十六進制打印字節,它們是0 53 50 0 0 51 0 0. Nanocat(nanomsg的簡單命令行工具)掛起而不是發送和關閉(就像在發送之前不斷嘗試確認連接一樣)數據)。

我假設這是某種握手Arduino失敗,因爲客戶端連接,讀取這些字節,然後關閉並重新啓動。在兩端使用nanomsg(從我的本地計算機到服務器)工作正常。

如果我得到的這些數字是一個握手,我該如何完成它?

Arduino的代碼迴路部分的肉是

client = server.available(); 
if (client) { 
    Serial.println("new client"); 
    while (client.connected()) { 
    while (client.available()) { 
     byte b = client.read(); 
     Serial.print(b,HEX); 
     Serial.write(b); 
    } 
    } 
} 

,並試圖連接時掛NANOCAT命令

nanocat --push --connect tcp://192.168.1.50:80 --data thismesadsfsdfg 
+1

你試過在你的命令中加入'--format ascii'嗎?或者把數據放在'''',比如''message「'中? – SSC

+1

我試過發送各種消息(引號,沒有引號,隨機字符串等),但沒有什麼改變Arduino收到的。格式化標誌僅用於接收數據,我無法控制nanocat如何發送數據(來自我知道的很少的數據)。 –

+1

原來這是nanomsg的一部分。 http://www.freelists.org/post/nanomsg/Status,242 –

回答

2

下面的文字描述nanomsg protocol for TCP

您可以在其中看到爲什麼要獲取指定的字節流,以及您應該在要發送的文本之前寫什麼。