如何在网络拔出然后插入后立即重新连接 TcpClient
本文关键字:重新连接 TcpClient 插入 然后 网络 | 更新日期: 2023-09-27 18:25:06
我有一个TcpClient,我想在网络断开连接后立即自动重新连接,然后重新连接,但我不知道如何实现它。
这是我的功能..
private void Conn()
{
try
{
client = new TcpClient();
client.Connect(new IPEndPoint(IPAddress.Parse(ip), intport));
//Say thread to sleep for 1 secs.
Thread.Sleep(1000);
}
catch (Exception ex)
{
// Log the error here.
client.Close();
}
try
{
using (NetworkStream stream = client.GetStream())
{
byte[] notify = Encoding.ASCII.GetBytes("Hello");
stream.Write(notify, 0, notify.Length);
}
byte[] data = new byte[1024];
while (true)
{
{
int numBytesRead = stream.Read(data, 0, data.Length);
if (numBytesRead > 0)
{
data= Encoding.ASCII.GetString(data, 0, numBytesRead);
}
}
}
}
catch{Exception ex}
此外,从Tcpip机器获取连续数据的可靠性while (true)
。直到我测试之前,此代码会在一段时间后自动退出响应或获取数据。请帮助我获得不间断的数据。谢谢。。
你在写完东西后立即处理NetworkStream
。这将关闭套接字。别这样。相反,将TcpClient
放在using
语句中。
您读取数据的方式完全正确。当Read
返回0
时,循环将退出,这表示远程端正常关闭连接。如果这是意外的,则问题出在远程端。
仅捕获SocketException
并检查状态代码属性以找出确切的错误。
无法可靠地检测网络错误。您必须等待异常才能注意到连接失败。之后,您需要定期尝试再次建立连接,以了解网络何时再次可用。
我相信 Windows 提供了一些网络接口级别的事件来检测未插入的电缆,但这些事件是不可靠的。