有没有更好的方法来监听端口和读取UDP数据?
我做了
self.udps.bind((self.address,self.port)
ata, addr = self.udps.recvfrom(1024)
它似乎被锁定在这种状态,直到它获取该数据,在裸脚本或线程中。
这很好用,但是如果你想说让它停止收听,那么直到它收到数据然后继续意识到它需要停止收听。我每次都必须将UDP数据发送到端口才能正常关闭。有没有办法让它在特定条件下立即停止听?
答案 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 ...