我一直在使用套接字tcp连接到游戏服务器。这里最大的问题在于游戏服务器没有任何分隔符发送数据 - 因为它将数据包长度发送到数据中 - 使得无法使用socket:receive(“* a”)或“* l”。从服务器收到的数据不具有静态大小,并以HEX格式发送。我使用此解决方案:从lua tcp socket接收没有数据大小的数据
while true do
local rect, r, st = socket.select({_S.sockets.main, _S.sockets.bulle}, nil, 0.2)
for i, con in ipairs(rect) do
resp, err, part = con:receive(1)
if resp ~= nil then
dataRecv = dataRecv..resp
end
end
end
正如你看到的,我只能通过读取一个字节并将其附加到一个字符串,而不是一个很好的方式得到从插座中的所有数据,因为我有两个套接字读。有没有更好的方式从这个套接字接收数据?
谢谢!我对settimeout很困惑,看起来延迟不能低于0.3 – Eshkation