2013-02-09 72 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"

相关问题