LuaSocket - TCP 第二条消息未发送。

我已经在谷歌上搜索了一段时间,似乎没有人提供解决我的问题的服务。

我正在使用 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); -- 这条消息,服务器确实接收了这条消息。

-- 稍后在我的代码中,我尝试发送另一条消息。

msg = {
    ["status"]="anotherMessage",
    ["usrName"]=username
};
msg = Json.Encode(msg)
tcp:send(msg); -- 即使我还连着,这条消息也没有发送。
点赞
用户1442917
用户1442917

你需要展示在另一侧发生了什么,因为即使连接已经打开也可能只是没有读取。你还未说明当"消息未发送"时发生了什么;你是否收到了错误信息?脚本完成了但消息未被发送?

你可以尝试几件事情:

  • 切换到(默认的)同步发送,直到你把它搞定;删除tcp:settimeout(0),因为如果另一侧没有准备好读取消息,那么你的发送可能会以“超时”消息失败。

  • 检查:send调用的错误消息,以查看是否超时。

    local ok,err = tcp:send(msg)

  • 使用socket.select检查另一侧是否已经准备好接收你要发送的消息。

2013-02-09 23:56:54
用户752976
用户752976

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

2013-02-09 23:58:11