我正在尝试在lua中创建TCP客户端
local host, port = HOST, PORT
local socket = require("socket")
client = socket.tcp();
client:connect(host, port);
client:send("Hello User");
这种方法很好,但是当我添加
时while true do
local s, status, partial = client:receive()
print(s or partial)
if status == "closed" then break end
end
从socket读取数据它阻止代码的总执行。
答案 0 :(得分:1)
默认情况下,所有luasocket I / O操作都是阻塞的。您需要使用socket.settimeout(0)
(settimeout)来禁用阻止功能。然后,您可以检查作为状态返回的“超时”值并相应地采取相应措施。
根据数据的发送方式,this answer也可能相关。