Python - UDP套接字检查来自服务器的响应

时间:2015-12-07 08:09:59

标签: python sockets udp

我有一个基本的客户端/服务器程序。服务器向客户端发送时间戳。我想检查客户端是否已回复消息,如果没有,请重新发送请求。我该怎么做呢?

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)

1 个答案:

答案 0 :(得分:1)

您似乎需要class MyJob < ActiveJob::Base def perform(*args) # Do something unless some flag is raised ensure self.class.set(wait: 1.hour).perform_later(*args) end end socket.settimeout()模块。

使用select,如果在指定的时间范围内没有收到任何数据,您可以告诉socket引发.settimeout()例外。如果您的服务器只需要处理一个客户端(每个线程/进程/ greenlet一个客户端/其他任何工作),这就足够了。如果您希望服务器在等待客户端响应并且您不使用任何线程/异步框架时执行某些操作,那么您可能需要编写更多代码,因为您要设置零超时并跟踪手动重新发送消息的时间。

socket.timeout模块为您提供了使用常见超时监听多个套接字的工具。