我正在尝试编写一个 TCP 客户端线程,该线程将连接到服务器并在接收到数据时继续处理数据。有时客户端会失去与服务器的连接。当连接重新建立时,线程应该恢复/恢复并再次自动开始处理数据。我似乎无法让它工作。基本算法如下。我的问题是我只是不太了解 TcpClient 在网络连接丢失时的行为方式。如何判断连接已丢失?然后我需要关闭连接吗?如何重新建立连接并继续?
TcpClient _tcpClient;
IPEndPoint _ipEndPoint;
bool _cancelled = false;
bool _error = true;
while (!_cancelled)
{
try
{
if(_error)
{
_ipEndPoint = new IPEndPoint(_myAddress, _myPort);
_tcpClient.Connect(_ipEndPoint);
_networkStream = _tcpClient.GetStream();
_error = false;
}
else
{
_data = new byte[10025];
if(_networkStream.CanRead)
{
_bytesRead = _networkStream.Read(_data, 0, (int)_tcpClient.ReceiveBufferSize);
if(_bytesRead > 0)
{
...process the data...
}
else
{
_error = true;
}
}
else
{
_error = true;
}
}
}
catch(Exception ex)
{
...log error...
_error = true;
}
}