我一直在使用套接字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