我的udp代码在从计算机1发送到计算机2时不起作用,但是它可以从comp 2发送到comp 1.我在同一台计算机上试过两次,按预期正常工作。计算机通过局域网上的以太网连接,Windows启动计算机,让我登录和读/写计算机。 服务器:
local socket = require "socket"
-- begin
local udp = socket.udp()
udp:settimeout(1)
udp:setsockname('*', 12345)
local data, msg_or_ip, port_or_nil
local cmd, parms
local running = true
print "Beginning server loop."
while running do
data, msg_or_ip, port_or_nil = udp:receivefrom()
if data then
print(data,msg_or_ip,port_or_nil)
udp:sendto(data,msg_or_ip,port_or_nil)
elseif msg_or_ip ~= 'timeout' then
print("Unknown network error: "..tostring(msg))
end
socket.sleep(0.01)
end
客户端:
local socket = require "socket"
local address, port = "192.168.137.161", 12345
udp = socket.udp()
udp:settimeout(1)
while true do
udp:setpeername(address, port)
udp:send(io.read())
udp:close()
--udp:setsockname("*",12345)
data, msg_or_ip, port_or_nil = udp:receivefrom()
print(data, msg_or_ip, port_or_nil)
udp:close()
end
客户端发送消息,服务器选择它,并且应该立即回复它,但客户端吐出
nil refused nil
,标签位于nil和拒绝之间。
我认为这主要是从服务器计算机发送到客户端计算机,因为它应该只回显数据。
我可以看到这个问题很难回答,因为不是每个人都可以同时完全访问两台计算机。对于记录,lua 5.1用于两者,socket也是v2.0.2。
答案 0 :(得分:0)
对于所有想知道的人,这是因为我关闭了套接字。没什么大不了的。