在lua中创建TCP客户端时出错

在lua中创建TCP客户端时出错,tcp,lua,luasocket,Tcp,Lua,Luasocket,我正在尝试在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 pa

我正在尝试在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

要从套接字读取数据,它会阻止代码的全部执行

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


根据数据的发送方式,也可能与此相关。

需要澄清的是,它是否会阻塞接收?即使您终止连接也会这样做吗?我尝试设置超时(0),但使用此请求不会阻塞,但始终不会返回任何数据。请检查指向的链接,以确保我包含的答案不会在消息中添加“\n”,并且默认情况下,
receive
希望有一行以换行符终止。因为它没有得到它,所以它不会返回任何数据(尽管它可能会返回部分结果)。