我有以下代码,它位于循环内(简化)。 cscc
是连接到localhost上的服务器的客户端套接字。我的服务器向客户端发送一个字符。但是,我似乎没有正确接收它。协议是TCP。
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 :
答案 0 :(得分:2)
也许服务器根本不需要真正发送任何数据。检查part
是否为空,看看如果未将第三个参数传递给socket.select
会发生什么。
答案 1 :(得分:0)
LuaSocket参考文档说:
“如果出现错误,该方法返回
nil
后跟一条错误消息,该消息可以是字符串'closed'[...]或字符串'timeout',以防超时在错误消息之后,该函数返回传输的部分结果。“
空字符串将被视为“部分结果”。
尝试对(part and #part > 0)
进行测试,这将检查该部分是否为非nil
,然后检查它是否实际包含任何字节。
使用netcat
或类似内容进行检查也是值得的,以确保您的服务器实际上是在发送您期望的数据。