2.3.3 Przykładowe zastosowanie
Gniazda nieblokujące z wykorzystaniem metody select() wykorzystywane są w niniejszej pracy w celu analizowania pakietów rozsyłanych przy pomocy protokołu UDP przez serwer sterujący radioteleskopem oraz do odczytywania wartości sygnału odczytanego przez radioteleskop. Przykład zastosowania metody select() w drugim programie prezentuje następujący kod:
sock = socket.socket(socket.AF_iNET, socket.sock_dgram) sock.bind((UDP_iP, udp_port))
timeout = 0
while self.frame.closethread != True:
ready_sockets = select.select([sock], [], [sock], 0.1) if (len(ready_sockets[2]) > 0):
break
elif (len(ready_sockets[0]) > 0): data = sock.recv(1024) data = data.splitC ') if data[0] == "tdata":
break
else:
timeout += 1
if timeout == self.udp_timeout:
break
else:
timeout += 1
if timeout == self.udp_timeout:
break
Drugi program wysyła także polecenia do serwera sterującego przy pomocy protokołu TCP. W celu odczytania odpowiedzi wysłanej przez serwer sterujący wykorzystana została metoda setblocking():
12