TCP 192.168.1.2:3645 192.168.1.3:1863已建立
192.168.1.2(服务器IP地址)
192.168.1.3(客户端IP地址)
有人知道原因吗?如何解决这个问题呢 .
我想知道服务器程序如何接收事件并在拔出客户端计算机的网络电缆时关闭套接字.
请给我一些建议或解决方案.
谢谢
解决方法 我认为可以通过使用TCP keepalive来解决.refrence http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html
连接后,设置socket keepalive属性. msdn说这个开关默认状态是关闭的,如果将keepalive设置为on,socket会自动检查网络状态,并且在socket上次 *** 作后首先检查时间是2小时.但时间可以缩短.然后在第一次检查后,套接字将服务时间.如果连接中断或死亡,
socket会抛出异常.
C#来源:
uint dummy = 0; byte[] inoptionValues = new byte[Marshal.SizeOf(dummy) * 3]; //set keepalive on BitConverter.GetBytes((uint)1).copyTo(inoptionValues,0); //interval time between last operation on socket and first checking. example:5000ms=5s BitConverter.GetBytes((uint)5000).copyTo(inoptionValues,Marshal.SizeOf(dummy)); //after first checking,socket will check serval times by 1000ms. BitConverter.GetBytes((uint)1000).copyTo(inoptionValues,Marshal.SizeOf(dummy) * 2); Socket socket = __ClIEnt.ClIEnt; socket.IOControl(IOControlCode.KeepAliveValues,inoptionValues,null);
我检查过.它运行正常.
总结以上是内存溢出为你收集整理的c# – 当网络电缆断开与网络适配器的连接时,如何获取套接字的状态全部内容,希望文章能够帮你解决c# – 当网络电缆断开与网络适配器的连接时,如何获取套接字的状态所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)