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
[email protected]
http://lists.python.it/mailman/listinfo/python