在Python中读取UDP数据的更好方法

时间:2013-06-29 17:52:57

标签: python python-2.7

有没有更好的方法来监听端口和读取UDP数据?

我做了

self.udps.bind((self.address,self.port)
ata, addr = self.udps.recvfrom(1024)

它似乎被锁定在这种状态,直到它获取该数据,在裸脚本或线程中。

这很好用,但是如果你想说让它停止收听,那么直到它收到数据然后继续意识到它需要停止收听。我每次都必须将UDP数据发送到端口才能正常关闭。有没有办法让它在特定条件下立即停止听?

1 个答案:

答案 0 :(得分:1)

recfrom等待数据到达指定端口。

如果您不希望它永远收听,请设置超时:

self.udps.bind((self.address,self.port)
self.udps.settimeout(60.0)  # set 1min timeout
while some_condition:
    try:
        ata, addr = self.udps.recvfrom(1024)
    except socket.timeout:
        pass  # try again while some_condition
    else:
         # work with the received data ...