2016-07-15 8 views
0

Es gibt einen Server für einen einzelnen Client. Client kann verbinden und zu trennen jederzeit Hier ist Code vereinfachtServer-Socket-Fehler Timer-Verwaltung

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((HOST, PORT)) 
s.listen(1) 
while true: 
    a = s.accept() 
    try: 
     data = a[0].recv(1024) 
    except socket.error: 
     a[0].close() 
     print 'cought the error' 

Es funktioniert, aber socket.error Generation nimmt unbestimmte Zeit von wenigen Sekunden bis zu einer Minute. Darf dieser Wert verwaltet werden?

+0

Nicht direkt. Suchen Sie nach nicht blockierenden E/A oder wählen Sie die entsprechende Dokumentation aus. –

Antwort

0

Wenn der Client trennt, gibt es keine socket.error, sondern recv() gibt sofort eine leere Zeichenfolge zurück. Außerdem schließen Sie in diesem Fall die Verbindung nicht.