LuaSocket (UDP) 不接收数据报
LuaSocket (UDP) not receiving datagrams
我正在为我正在进行的项目试验 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
客户:
-- 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
你设置的超时值为0
,导致客户端每次都超时
要修复它,给它一个正的超时值:
udp:settimeout(1)
或将其设置为nil
或负值,以便无限期阻塞:
udp:settimeout()
或
udp:settimeout(-1)
我正在为我正在进行的项目试验 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
客户:
-- 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
你设置的超时值为0
,导致客户端每次都超时
要修复它,给它一个正的超时值:
udp:settimeout(1)
或将其设置为nil
或负值,以便无限期阻塞:
udp:settimeout()
或
udp:settimeout(-1)