[英]Python - UDP socket Check response from server
我有一个基本的客户端/服务器程序。 服务器将时间戳发送给客户端。 我想检查客户端是否响应了消息,如果没有,请重新发送请求。 我将如何处理?
while 1:
wait = "True"
line = raw_input("Press enter to get the time or \"STOP\" to exit: ")
if line == "STOP":
break
print "Waiting for response......"
s.sendto(line, (servAddr,servPort))
line, server = s.recvfrom(256)
while wait: // Obviously wrong, but pseudo
if line == "":
print 'Send another'
wait = False
print (line)
似乎您需要用socket.settimeout()
或select
模块。
使用.settimeout()
可以告诉套接字引发socket.timeout
异常,如果该套接字在指定时间范围内未收到任何数据。 如果您的服务器只需要处理一个客户端(每个线程/进程/ greenlet /无论哪个也可以),则这已经足够了。 如果您希望服务器在等待客户端响应时做一些事情,并且您没有使用任何线程/异步框架,则可能需要编写更多代码,因为您想将超时设置为零并跟踪时间手动重新发送消息。
select
模块为您提供了可在一个公共超时时间内监听多个套接字的工具。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.