我在网上搜索了我的问题的解决方案,但直到现在还没有结果。
我用一款Silverlight应用程序、一款SocketServer和一款SocketClient (其中有一款silverlight应用程序)做了测试。
在调试模式下,当两个应用程序都在运行时,当我关闭浏览器窗口时,我确实很高兴看到服务器上触发了一个事件,套接字连接被自动关闭。
大谜团开始了。这到底是怎么发生的呢?
如果按下电源按钮来关闭客户端计算机呢?
我的事件是否仍然会被触发,或者我将在服务器上导致许多未关闭的套接字连接的堆栈溢出?
发布于 2009-10-11 12:56:24
在服务器上,您真的应该轮询套接字连接,以查看它们是否仍然有效。发送“你还活着吗”的信息。
通常,一旦套接字连接丢失,向套接字下发数据将导致它崩溃并出现异常。
不幸的是,计算机通常无法检测到某个套接字是否已失去链接,除非您尝试对其执行某些操作。它知道的唯一时间是客户端(或服务器)何时发送“关闭连接”命令(这通常在.NET中通过Socket.Close()方法完成)。
套接字就是这样的痛苦。
https://stackoverflow.com/questions/1476957
复制相似问题