[Python] Telnet: verifica connessione.
Gabriele Battaglia
iz4apu a libero.it
Mer 21 Giu 2017 12:35:58 CEST
Giorno.
Uno script connette un servizio via Telnet. Poi, come un qualsiasi
client, ad ogni ciclo legge l'eventuale output del server con la
funzione read_very_eager, della libreria inclusa in Python, telnetlib.
Tuttavia, se l'utente non interagisce con il server per un periodo
impostato da quest'ultimo, pari a circa 60 minuti, la connessione viene
chiusa.
read_very_eager però, non se ne accorge e, a parte il fatto che
naturalmente non legge nulla, non solleva nemmeno alcuna eccezione e lo
script continua a girare senza errori.
Se l'utente poi torna al terminale dopo 60 minuti ed invia un comando,
il client trova la connessione chiusa e viene sollevata questa eccezione:
Traceback (most recent call last):
File "C:\Dropbox\Py\Bici.py", line 302, in <module>
s = tn.read_very_eager()
File "C:\Python27\lib\telnetlib.py", line 416, in read_very_eager
self.fill_rawq()
File "C:\Python27\lib\telnetlib.py", line 576, in fill_rawq
buf = self.sock.recv(50)
socket.error: [Errno 10054] Connessione in corso interrotta forzatamente
dall'host remoto
C:\Dropbox\Py>
La domanda è, a parte la gestione dell'errore con un try:, esiste un
altro modo per verificare, ad intervalli regolari, se la connessione è
ancora attiva?
Grazie.
Gabriele.
Maggiori informazioni sulla lista
Python