LuaSocket(UDP)不接收数据报

acc*_*3r2 2 lua udp datagram luasocket

我正在尝试使用LuaSocket来完成我正在进行的项目.我选择UDP作为我的协议.

在线寻找文档和教程,我试图创建一个客户端 - 服务器对进行测试和学习.

根据我的阅读,以下代码应该工作.但是,只有服务器似乎正常工作.客户端发送消息,但不会收到服务器的回复.

感谢您提供任何帮助.

服务器:

-- Server
#!/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("Received: ", data, ip, port)
        udp:sendto(data, ip, port)
    end
    socket.sleep(0.01)
end
Run Code Online (Sandbox Code Playgroud)

客户:

-- Client
#!/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!")
data = udp:receive()
if data then
    print("Received: ", data)
end
Run Code Online (Sandbox Code Playgroud)

Yu *_*Hao 5

您设置的超时值0,每次都会导致客户端超时.

要修复它,请给它一个正超时值:

udp:settimeout(1)
Run Code Online (Sandbox Code Playgroud)

或者将其设置nil为负值,因此它会无限期地阻塞:

udp:settimeout()
Run Code Online (Sandbox Code Playgroud)

要么

udp:settimeout(-1)
Run Code Online (Sandbox Code Playgroud)