【发布时间】:2016-06-06 06:20:40
【问题描述】:
我写了一个 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
message, address = clientSocket.recvfrom(1024)
end = time.time()
if message != '':
print message
rtt = end - start
print "RTT = " + str(rtt)
如果服务器放弃响应,以下行会卡在那里。
message, address = clientSocket.recvfrom(1024)
我在这里尝试了超时方法:
Socket recv - limited wait time
但是超时将中止整个客户端程序。我只希望客户端等待 5 秒,然后如果没有收到最后一个响应(被服务器丢弃),则继续发送下一个数据包。
如何在客户端设置等待时间?
【问题讨论】: