簡體   English   中英

LuaSocket-TCP第二消息未發送

[英]LuaSocket - TCP 2nd message not sending

我一直在搜索Google一段時間,看來這里沒有解決此問題的報價。

我使用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.

您需要顯示另一側發生的情況,因為即使連接可能已打開,也可能根本無法讀取。 您也不會說“消息未發送”時到底發生了什么。 你得到一個錯誤嗎? 腳本完成,但消息未發送?

您可以嘗試以下幾種方法:

  • 切換到(默認)同步發送,直到您開始工作為止; 刪除tcp:settimeout(0) ,因為如果另一端還沒有准備好讀取消息,則發送可能會因“超時”消息而失敗。
  • 檢查來自:send調用的錯誤消息,以查看是否超時。

    local ok, err = tcp:send(msg)

  • 使用socket.select來檢查另一側是否已准備好接受您發送的消息。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM