2013-06-29 4 views
1

Есть ли лучший способ прослушивания порта и чтения данных UDP?Лучший способ чтения данных UDP в Python

я делаю

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

кажется, запертым в этом состоянии до тех пор, пока он получает эти данные, в голом скрипте или в потоке.

Это хорошо работает, но если вы хотите сказать, чтобы он прекратил слушать, он не будет, пока не получит данные, и не перейдет к осознанию необходимости прекратить прослушивание. Мне приходилось каждый раз отправлять UDP-данные в порт, чтобы он был изящно закрыт. Есть ли способ заставить его прекратить слушать сразу с определенным условием?

ответ

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 ... 
Смежные вопросы