2013-02-09 27 views
1

我一直在搜索谷歌一段時間,似乎沒有提供解決這個問題,我在這裏。LuaSocket - TCP第2條消息沒有發送

我使用LuaSocket作爲一種簡單的方式連接到我創建了一個外部服務器,我能夠成功地連接到它併發出信號。

然而,當我嘗試稍後發送第二消息,外部服務器似乎並沒有被接收的消息,儘管我仍然連接到插座。

socket = require("socket") 
host, port = ip, port 
tcp = assert(socket.tcp()) 
tcp:settimeout(0) 

tcp:connect(host, port); 

msg = { 
    ["status"]="connect", 
    ["usrName"]=username 
} 
msg = Json.Encode(msg) 

tcp:send(msg); -- This message, the server received this message. 


-- Later in my code, I attempt to send another message. 

msg = { 
    ["status"]="anotherMessage", 
    ["usrName"]=username 
}; 
msg = Json.Encode(msg) 
tcp:send(msg); -- This message is not sending, even though i'm still connected. 
+0

服務器是否保持連接打開?您是否嘗試過運行[Wireshark](http://www.wireshark.org/)以查看第二個數據包是否離開您的計算機? – 2013-02-09 07:54:40

回答

1

您需要顯示在另一邊發生了什麼,因爲即使連接可能打開,它也可能不會讀取。當「消息不發送」時,你也不會說出發生了什麼。你有錯誤嗎?腳本結束但消息未發送?

有幾件事情,你可以嘗試:

  • 切換到(默認)同步發送,直到你得到它的工作;請刪除tcp:settimeout(0),因爲如果對方沒有準備好閱讀郵件,您的發送可能會因「超時」消息而失敗。
  • 檢查,看看從:send調用錯誤信息,如果它的超時與否。

    local ok, err = tcp:send(msg)

  • 使用socket.select檢查,如果對方也隨時接受您發送的消息。

0

嘗試在序列化的JSON末尾添加"\r\n"