C#socket通信时,怎样判断socket双方是否断开连接
语言:C#问题:在socket通信时,怎么样判断socket双方是否断开连接我在Server端new了一个socket,然后bind,开了一个线程来accept前来连接的...
语言:C# 问题:在socket通信时,怎么样判断socket双方是否断开连接 我在Server端new了一个socket,然后bind,开了一个线程来accept前来连接的client,每接到一个client前来连接就新开一个线程和它进行通信。 我把Server端得到的socket放到一个集合里,我想知道集合里的socket是否断开连接,如果断开连接我就把它从这个集合里移除。 判断socket是否断开连接,网上有N种说法: 1.Socket.Connected 这个属性只能说明上一次通信时还是正常的。 2.Socket.Pool 这个方法是可以,但是它要从socket里读或写部分数据,如果其他线程从这个socket读写数据,那么数据将会出错。我在写一个远程通信软件时候就出现这个问题了。 而且http://technet.microsoft.com/zh-cn/system.net.sockets.socket.poll.aspx上这样说的: 此方法不能检测某些类型的连接问题,例如,网络电缆中断或远程主机意外关闭。您必须尝试发送或接收数据以检测这些类型的错误。 3.使用心跳包 每隔一段时间,socket一方向另一方发送一段特殊的数据,socket的另一方接到这个数据后回发回来。这样就能判断socket两方都没有掉线了。 请问:还有没有解决方案能快速准确判断socket双方是否断开连接? 如果您有解决方法,且测试成功,请不吝赐教,十分感谢。 如果您不能解决此问题,请不要回复,谢谢合作。
展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询