LuaSocket(UDP)无法接收数据报。

我正在为项目尝试 LuaSocket。我选择使用 UDP 作为协议。

在网上寻找文档和教程后,我尝试创建一个用于测试和学习的客户端服务器对。

根据我所读的内容,以下代码应该可以工作。但是,只有服务器似乎正常工作。客户端发送消息,但无法接收来自服务器的回复。

感谢任何人可以提供的帮助。

服务器:

-- 服务器
#!/usr/bin/env lua5.1

local socket = require("socket")

udp = socket.udp()
udp:setsockname("*", 53474)
udp:settimeout(0)

while true do
    data, ip, port = udp:receivefrom()
    if data then
        print("接收到:", data,ip,port)
        udp:sendto(data, ip, port)
    end
    socket.sleep(0.01)
end

客户端:

-- 客户端
#!/usr/bin/env lua5.1

local socket = require("socket")

udp = socket.udp()
udp:setpeername("127.0.0.1", 53474)
udp:settimeout(0)

udp:send("数据!")
data = udp:receive()
if data then
    print("接收到:", data)
end
点赞
用户1009479
用户1009479

你设置的超时时间为 0,这会导致客户端每次都会超时。

为了解决这个问题,给它一个正数的超时时间:

udp:settimeout(1)

或者将其设置为 nil 或者负数,这样它就会无限期地阻塞:

udp:settimeout()

或者

udp:settimeout(-1)
2015-01-23 08:40:44