クライアント アプリがソケットを閉じたり、サーバーを終了したりしても、サーバーはまだ生きていると見なします。私もTcpClient.Connectedをチェックしてから、これを見ます。重要な部分を太字にしました
最新の操作の時点でClient ソケットがリモート リソースに接続されていた場合は true 。それ以外の場合は false。
ソケットが閉じているかどうかを知るにはどうすればよいですか? 現時点では、操作を実行して例外を取得し、開いているか閉じているかを確認する必要があります
クライアント アプリがソケットを閉じたり、サーバーを終了したりしても、サーバーはまだ生きていると見なします。私もTcpClient.Connectedをチェックしてから、これを見ます。重要な部分を太字にしました
最新の操作の時点でClient ソケットがリモート リソースに接続されていた場合は true 。それ以外の場合は false。
ソケットが閉じているかどうかを知るにはどうすればよいですか? 現時点では、操作を実行して例外を取得し、開いているか閉じているかを確認する必要があります
ソケットを介した通信を切断する可能性のあるものは非常に多く、その多くは完全に制御できないため、シンプルに保つのが最善です。
現時点では、非常にシンプルで低コストの完全に受け入れられる検出メカニズムがあります。
ハートビートを実行し、クライアントから X 何かごとに I'm here メッセージを送信し、サーバーを実行して、X * フィドル ファクター間隔のメッセージがなかったかどうかを確認できます。ただし、プロセッサ時間と帯域幅を使用します。
別のオプションは、クライアントが接続されていないことを検出し、新しい接続を要求するかどうかによって異なります。request に一意の識別子がある場合は、既存の接続を実行し、存在する場合は強制終了し、開始してから通常どおり続行できます。
例外が正しくないと感じることはわかっていますが、接続が失われ続ける場合にのみ問題になります。もしそうであれば、それを整理することに努力を向けたほうがよいでしょう。