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