Ciao a tutti, avrei bisogno di un aiuto. Vorrei trasferire dei dati tra due pc via wireless e pensavo di ricorrere ai socket. Fin qui tutto bene. Tra client e server c'è una connessione WiFi molto instabile e potrebbe anche cadere per qualche secondo/minuto. Il problema dei socket è che, se la connessione cade improvvisamente senza nessun "avviso", il server aspetta di ricevere dati dal client infinitamente pur avendo impostato un settimeout diverso da None.
Forse un esempio potrebbe rendere più chiara la cosa: [server] import socket HOST=''" PORT=50007 s = socket.socket( socket.AF_INET, socket.SOCK_STREAM) s.bind( (HOST,PORT) ) s.listen(1) conn,addr = s.accept() while True: s.settimeout(2) conn.recv(1024) if not data: print("connessione chiusa") s.settimeout(None) conn,addr = s.accept() else: print "data" s.close() [client] import socket import time REMOTE_HOST="192.168.1.?" PORT=5007 s = socket.socket( socket.AF_INET, socket.SOCK_STREAM) try: s.connect( REMOTE_HOST, PORT) except: print("Error") s.send("blabla") time.sleep(15) s.send("blabla2") Se durante lo sleep di 15 secondi chiudo la connessione WiFi il server non si accorge di niente e rimane ad aspettare su conn.recv(1024)...come posso risolvere questo problema? Avete qualche idea? Grazie mille, Simone _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python