我正在为我正在做的一个项目做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发布于 2015-01-23 08:40:44
您设置的超时值是0,这会导致每次客户端超时。
要修复它,给它一个正的超时值:
udp:settimeout(1)或者将其设置为nil或负值,因此它将无限期地阻塞:
udp:settimeout()或
udp:settimeout(-1)https://stackoverflow.com/questions/28105571
复制相似问题