1

我一直在谷歌搜索一段时间,似乎没有解决我在这里遇到的这个问题的提议。

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

2 回答 2

1

您需要显示另一端发生的情况,因为即使连接可能打开,它也可能根本无法读取。您也没有说“消息未发送”时到底发生了什么;你有错误吗?脚本完成但未发送消息?

您可以尝试几件事:

  • 切换到(默认)同步发送,直到你让它工作;remove tcp:settimeout(0),因为如果对方还没有准备好阅读消息,您的发送可能会简单地失败并显示“超时”消息。
  • 检查来自调用的错误消息:send,看看它是否超时。

    local ok, err = tcp:send(msg)

  • 用于socket.select检查对方是否准备好接受您发送的消息。

于 2013-02-09T23:56:54.007 回答
0

尝试"\r\n"在序列化 JSON 的末尾添加。

于 2013-02-09T23:58:11.740 回答