3

サーバーに再接続できるようにするTCP Client必要があります。ネットワーク接続の品質が低いか、メンテナンスの問題が原因で、サーバーが利用できない場合があります。この分野で質の高いソリューションを探しています。

私の現在の解決策は次のとおりです。

  • ConnectionState enum {Offline, Online, Connecting} で接続状態を維持する
  • TcpClientクラスでクライアントを作成します。
  • と呼ばれる 2 つのタイマーを作成しConnectionCheckTimerReconnectTimer
  • サーバーに接続する
  • リーダー スレッドと接続チェック タイマーを開始する
  • 読み取りは tcpClient.GetStream() で実行され、次にこのストリームから読み取ります
  • ReaderLoop クライアントの状態がオフラインに変更され、ReconnectTimer が起動されたときに例外がキャッチされた場合
  • ConnectionCheckTimerlastMessageTimestamp を定期的にチェックし、間隔が maxValue より大きい場合は現在の時刻と比較します。ReconnectTimer

現在、このソリューションには満足していません。これは、TcpClient.NetworkStream でインスタンス ObjectDisposedException の例外が引き続き生成されるためです。接続、切断、データの読み取り中に発生する可能性のあるすべてのソケットの問題に対処できる、クリーンで再利用可能な Tcp 再接続クライアントの実装を探しています。

4

2 に答える 2

1

接続に問題がある場合は、常に例外があります。適切なアウトラインがあると思います。例外を処理する必要があるだけです。独自の Socket クラスの実装から始めて、TCPIP サーバーを作成できます。スターター コードは MS にあります。

http://msdn.microsoft.com/en-us/library/fx6588te(VS.71).aspx

C# コードは VB ページの途中にあります。

于 2010-08-10T20:04:38.930 に答える
0

使用する必要があるクラスは「SocketAsyncEventArgs」です。私はこのプロジェクトでそれを使用しました:

http://ts3querylib.codeplex.com/

AsyncTcpDispatcher クラスを見てください。

于 2010-08-20T07:32:17.457 に答える