問題:
サーバーとして機能している場合、どうすれば即座に判断できるでしょうかクライアントが接続されているソケットから切断されるとき?サーバーへの接続時にクライアントの切断を検出する一般的な方法は、このシナリオでは効果がありません。
回答:
ソケット接続は、ネイティブに切断イベントを提供しません。したがって、ソケットの接続ステータスを定期的に確認する必要があります。次の拡張メソッドは、ソケットが切断されたかどうかを検出する信頼性の高い方法を提供します。
static class SocketExtensions { public static bool IsConnected(this Socket socket) { try { return !(socket.Poll(1, SelectMode.SelectRead) && socket.Available == 0); } catch (SocketException) { return false; } } }
このメソッドは、ユーザー定義の頻度でソケットをポーリングし、接続を判断します。ポーリングでソケットからの読み取りに利用可能なバイトがゼロであることが検出された場合、接続は切断されたとみなされます。
以上がサーバーはどのようにしてクライアントのソケット切断を即座に検出できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。