tcp - lua创建TCP客户端报错

标签 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 partial)
    if status == "closed" then break end
end

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

最佳答案

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

根据数据的发送方式,this answer也可能相关。

关于tcp - lua创建TCP客户端报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18204988/

相关文章:

linux - 在没有服务器调用 'connect' 的情况下,套接字上的 'accept' 调用能否成功返回?

lua - Lua中的"main"函数?

c++ - 从 C++/C 设置全局 LUA_PATH 变量?

lua - 使用 luasocket 下载文件

lua - 使用bind()创建带有Lua Socket的服务器

http - 使用 LuaSocket 的 HTTP 模块下载大文件,同时保持 UI 响应

linux - 有没有一种方法/工具可以在 Linux 下列出标记为 "thin"的 TCP 连接?

启动时的 MySQL 问题

linux - 在 Linux 中处理 c10k

c++ - 记录假类