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...
}
}
}