我编写了一个udp服务器和客户端。客户端向服务器发送简单的udp消息,服务器将做出响应。服务器将随机丢弃一些响应数据包。在我的客户端代码中,我编写了以下代码行
for i in range(0,10):
sequence_number = i
start = time.time()
clientSocket.sendto("Ping " + str(i) + " " + str(start), server)
# Receive the client packet along with the address it is coming from
我正在尝试将一些Lua代码组合在一起,这些代码将发送命令,然后捕获从udp设备返回的所有破碎的响应。 以下是我当前的代码 local udp = socket.udp()
udp:settimeout(0)
udp:setpeername("172.16.0.23", 65432)
local cmd = "$RS232 test message\r"
udp:send(cmd)
repeat
local data, msg = udp:receive()
if data then
print("received:&
我感兴趣的基本代码序列是(伪码)
sendto(some host); // host may be unreachable for now which is normal
...
if(select(readfs, timeout)) // there are some data to read
recvfrom();
由于Win2000,ICMP数据包在将UDP数据报发送回不可达端口后,将触发select,在WSAECONNRESET的recvfrom失败后触发select。这样的行为对我来说是不可取的,因为在这种情况下,我希望选择结束超时(没有数据可读取)。在Windows上,这可以