1

バックグラウンド

    TCP 接続を介してサーバー (もちろん触れません) と通信しています。接続しようとしているアプリケーションには 2 つの接続が必要です。1つは「接続したい」ハンドシェイクタイプのもので、もう1つは実際の接続用の別のポートです。このことに何日も頭を悩ませた後、2番目の接続が受け入れられるには、サーバーによって最初の切断(FIN)が開始される必要があることがわかりました(サーバーはすぐに行います)。クライアントが切断を開始すると、2 番目の接続は拒否されます。

質問:

    私はこれに関する多くの投稿を読みました.TCP接続と、接続がアクティブかどうかを実際に知ることができない方法とそのすべてについて知っています(接続の切断、回線の切断、予期しないシャットダウンなどで応答しないでください). しかし、リモートサーバーにデータを書き込もうとせずに、リモートサーバーが適切に切断されたことを検出する方法はありますか?

    繰り返しますが、接続の切断や回線の切断などについて話しているのではありません。サーバーが ACK した FIN セグメントをいつ送信するかを知りたいです。簡単に聞こえますよね?

4

1 に答える 1

2

NetworkStreamのドキュメントを正しく理解していれば。NetworkStream (同期または非同期) から読み取りを行い、0 バイトが返された場合は、リモート パーティが接続を閉じたことを意味します。つまり、FIN は ACK されています。

于 2013-03-02T13:03:25.760 に答える