Problem:
Wie können wir bei der Funktion als Server umgehend feststellen? wenn ein Client die Verbindung zum verbundenen Socket trennt? Die gängigen Methoden zum Erkennen einer Client-Trennung beim Herstellen einer Verbindung zu einem Server sind in diesem Szenario wirkungslos.
Antwort:
Socket-Verbindungen stellen nativ keine Trennungsereignisse bereit. Daher müssen wir regelmäßig den Verbindungsstatus des Sockets überprüfen. Die folgende Erweiterungsmethode bietet eine zuverlässige Möglichkeit, zu erkennen, ob ein Socket getrennt wurde:
static class SocketExtensions { public static bool IsConnected(this Socket socket) { try { return !(socket.Poll(1, SelectMode.SelectRead) && socket.Available == 0); } catch (SocketException) { return false; } } }
Diese Methode fragt den Socket in einer benutzerdefinierten Häufigkeit ab, um die Konnektivität zu ermitteln. Wenn bei der Abfrage festgestellt wird, dass keine Bytes zum Lesen vom Socket verfügbar sind, gilt die Verbindung als getrennt.
Das obige ist der detaillierte Inhalt vonWie kann ein Server Verbindungsabbrüche von Client-Sockets sofort erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!