关于C# Socket断连(特别为拔掉网线)后的,另一种新奇判断方法
- 1.bug原因
- 2.解决方法
- 2.1断线重连
- 2.2ping命令
1.bug原因
当Socket拔掉网线后,Socket.Connected(),此时不一定会判别出结果为false。而当前情形又不允许添加心跳包。
2.解决方法
在当前情况下,可以考虑使用Ping命令,对其进行判定。
2.1断线重连
while (true)
{#region Socket断线重连if (!CMD_Ping()){//等待3秒后重新连接Thread.Sleep(3000);try{socket.Close();socket.Dispose();}catch{socket.Close();socket.Dispose();}//Socket通讯连接//...............//...............}#endregionGC.Collect();GC.WaitForPendingFinalizers();
}
2.2ping命令
private bool CMD_Ping()
{string host = "192.168.255.12";int timeout = 500; //超时时间,单位为毫秒try{Ping ping = new Ping();PingReply reply = ping.Send(host, timeout);if (reply.Status == IPStatus.Success){return true;}else{return false;}}catch{return false;}
}