2016-04-27 4 views
0

Wir haben eine Unix-Domain-Stream-Socket-Verbindung zwischen Client-Prozess-Server-Prozess. Wenn der Server beendet wird, schließt er seine verbundenen Sockets und seinen hörenden Socket.Im Client befindet sich der Unix Stream-Socket immer noch im CONNECTED-Status, obwohl der Server die Verbindung geschlossen hat

Manchmal, auf der Client-Seite, Socket ist immer noch im Status VERBUNDEN (mit netstat -anp | grep. Auch auf der Client-Seite, wenn recv() aufgerufen wird, gibt es EAGAIN errno. Dieses Verhalten wird nur einige Male beobachtet , nicht in der Lage zu verstehen, wie dies möglich ist.

Wenn jemand erklären kann, wie es möglich ist, dann wäre es sehr hilfreich sein.

+0

Reduzieren Sie den Code auf das minimale Beispiel und zeigen Sie es uns. – SergeyA

Antwort

0

explizit die Verbindung zu schließen?

Wenn der Server-Code ist abrupt beendet, ohne alle Verbindungen zu schließen, sieht das Betriebssystem diese Verbindung trotzdem als aktiv an Se der Server hat keine Zeit gehabt, aufzuräumen. Die Methode hängt von der verwendeten Sprache ab.

Verwandte Themen