TCP 非同期プロジェクトがあり、接続が閉じられた場合 (サーバーによって閉じられなかった場合)、クライアントをサーバーに再接続するときに問題が発生します。
サーバーが閉じられると、クライアントは次のエラーを受け取ります。
An existing connection was forcibly closed by the remote host at EndReceive(IAyncResult ar) at ReceiveCallback(IAsyncResult ar)
PS: クライアントはサーバーからのみストリームを受信できます。
そうは言っても、どうにかしてサーバーに再接続する必要があることは理解しています。私は何かをしようとしましたが、クライアントが応答せず終了していなかったため、うまくいきませんでした。
私がしたことは、以下の手順を含む受信コールバックのキャッチブロックで、ClientSocket を Disconnected(true) に設定し、while ループ (!ClientSocket.Connected) で、非同期を開始するメインメソッドをリコールしていたことです。コードの最後の行は Thread.Sleep(n); でした。
これらのことは、受信コールバックで行われます
- バッファから文字列を取得する
- なんでもする..文字列で
- 再度呼び出す BeginReceive
PS: 別のポートを使用したくありません。