当我的客户端应用程序关闭套接字或甚至终止我的服务器仍然认为它活着。我甚至检查TcpClient.Connected然后我看到了这一点。我加粗了重要部分
如果客户端套接字连接到最近一次操作的远程资源,则为true ;否则,错误。
我怎么知道插座是否关闭?目前,我必须进行操作并获得异常,以发现它是打开还是关闭
答案 0 :(得分:1)
有很多东西可以破坏套接字上的通信,其中很多都完全不受你的控制,最好保持简单。
目前,您拥有完全可接受的检测机制,简单且成本低廉。
你可以做一个心跳,每隔X个时间从客户端发送一条我在这里的消息,然后让服务器运行,看看是否有一个X *小提琴因素间隔。但是使用处理器时间和带宽。
另一个选项取决于您的客户端检测到它已不再连接并请求新连接。如果请求中有唯一标识符,则可以运行现有连接,将其删除,如果存在,则启动然后继续正常。
我知道异常感觉不对,但如果你继续失去连接,那只会是一个真正的问题,如果你是你的努力,那么最好将其排序。