当我的客户端应用程序关闭套接字甚至终止时,我的服务器仍然认为它还活着。我什至检查TcpClient.Connected http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.connected%28v=vs.90%29.aspx然后我看到了这个。我把重要的部分加粗了
如果客户端套接字已连接到远程资源,则为 true截至最近一次操作;否则为假。
我如何知道套接字是否关闭?目前我必须执行一项操作并获取异常以发现其是否打开或关闭
有很多事情可以破坏套接字上的通信,其中许多完全超出您的控制范围,最好保持简单。
目前您拥有一个完全可以接受的检测机制,非常简单且成本低廉。
您可以做一次心跳,每隔 X 个时间从客户端发送一条“我在这里”消息,然后让服务器运行并查看是否没有 X * 小提琴因子间隔的消息。但使用处理器时间和带宽。
另一种选择取决于您的客户端检测到它不再连接并请求新连接。如果请求中有唯一标识符,则可以运行它的现有连接,终止它(如果存在),然后启动然后正常继续。
我知道例外感觉不太对劲,但只有当你不断失去联系时,这才是真正的问题,如果是的话,你的努力会更好地集中在解决这个问题上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)