可以开启一个TCP数据接收监听线程,Client读取Server发送的信息,利用tcpClient.GetStream().Read(buffer)这个方法是阻塞的来判断client和server是否断开连接,只有当服务端发送消息,tcpClient.GetStream().Read(buffer)才会返回信息的长度,否则就一直阻塞;如果client和server连接断开,tcpClient.GetStream().Read(buffer)则会返回0。
部分代码如下:
//读取一个个字节
byte[] buffer = new byte[10240];
int readLen = 0;
//如果readLen为0,则可能是client和server的连接断开了
readLen = tcpClient.GetStream().Read(buffer);
if (readLen == 0)
{
count++;
} else
{
count =0;
}
if (count >= 5)//以防意外,可以多判断几次readLen的值,如果连续几次都为0,则确认连接断开,然后我们可以关闭Client客户端或进行重连操作
{
tcpClient.Close();
}