在Lua中创建TCP客户端时出现错误。

我正在尝试在 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 中读取数据时,它会阻止代码的总体执行。

点赞
用户1442917
用户1442917

默认情况下,所有的 luasocket I/O 操作都是阻塞的。您需要使用 socket.settimeout(0) (settimeout) 来禁用阻塞。然后,您可以检查返回的状态值是否为 "timeout" 并根据情况采取行动。

根据数据是如何发送的,此回答也可能是相关的。

2013-08-13 22:05:53