0

C# で TCP クライアント アプリケーションを作成しています。サーバーに接続します。通常の状態では、サーバーは毎秒新しいデータを送信します。私のクライアント アプリケーションはバイト ストリームを解析し、それをデータベースに保存してから、サーバーからの次のメッセージを待ちます。これは別のスレッドで実行され、メイン アプリケーションが実行されている限り、メッセージの受信と処理を継続する必要があります。ただし、サーバーが停止したり、ネットワーク接続が一時的に失われたりする場合があります。サーバーがオンラインに戻った場合、または再び到達可能になった場合、コードはそれから回復し、サーバー メッセージの処理を続行できる必要があります。サーバーが切断されたときに現在のコードがハングしているように見えます。サーバーを再度処理するには、サーバーを完全にシャットダウンしてから再起動するしかありません。私は何を間違っていますか?

bool IsCancelled = false;
IPEndPoint _ipEndPoint = new IPEndPoint(IPAddress.Parse(myIPAddress), myPort);
TCPClient _tcpClient = new TCPClient();
_tcpClient.Connect(_ipEndPoint);
NetworkStream _networkStream = _tcpClient.GetStream();

while(!IsCancelled)
{
  _data = new byte[10025];
  if(_networkStream.CanRead)
  {
    _bytesRead = _networkStream.Read(_data, 0, (int)_tcpClient.ReceiveBufferSize);
    if(_bytesRead > 0)
    {
      ...Process data...
    }
  }
}
4

0 に答える 0