1

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

我做一个

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

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

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

4

1 回答 1

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 ...
于 2013-06-29T18:58:13.420 回答