lua socket多次接收报告相同的数据
问题描述:
我有下面的代码位于一个循环内(简体)。 cscc
是连接到本地主机上的服务器的客户端套接字。我的服务器向客户端发送单个字符。但是,我似乎没有正确接受它。协议是TCP。lua socket多次接收报告相同的数据
rect, _, st = socket.select({cscc}, nil, .5)
if(rect[cscc] ~= nil) then
data, err, part = csc:receive(512)
if(part ~= nil) then
print(err.." : "..part)
end
socket.sleep(1)
end
当角色从服务器发送,我得到下面的行重复作为输出:
timeout :
明显,部分不为空在这里。这里发生了什么?为什么我一遍又一遍地收到同样的东西?
答
也许服务器从来没有真正发送过任何数据。检查part
是否为非空,并查看如果不将第三个参数传递给socket.select
会发生什么情况。
答
的LuaSocket参考文档说:
“以错误的情况下,该方法返回
nil
紧随其后的错误消息,其可以是字符串‘闭合’[...]或字符串“超时'如果在操作过程中发生超时,并且在错误消息之后,该功能返回发送的部分结果。“
空字符串将被视为“部分结果”。
对(part and #part > 0)
尝试测试,这将检查部分是非nil
,然后检查是否实际上包含任何字节。
也可能值得使用netcat
或类似的方法检查,以确保您的服务器实际上正在发送您期望的数据。
也许你正在收到一个不可打印的字符(或在开头为'0')?你有没有测试零件的尺寸?也许这个字符串是空的? – 2013-05-09 11:03:46