使用非阻塞send 0字节的方法无法判断socket连接。那是msdn上介绍的方法。我的服务程序启动专门线程负责监听端口,并处理新的socket连接数据。我客户端使用shutdown+close断开了,但是服务程序中的socket的connected属性一直为true,send 0字节总是成功,没有异常。如果可以及时判断连接丢失的话,我就可以直接在主线程中接收和发送数据。否则要启动专门的线程来处理新的socket连接,当客户端断开时阻塞式的receive函数会直接返回0,我就可以直接close了。
另外有一种poll的方法,看了一下,也是要阻塞的方式才能判断,多个socket需要处理的情况下,不适合单线程来处理。
本文探讨了非阻塞send0字节方法在检测Socket连接失效时的问题。介绍了服务端线程监听机制及客户端断开连接后服务端的连接状态仍为true的情况。讨论了poll方法的局限性和在多socket处理时的单线程应用挑战。
1045

被折叠的 条评论
为什么被折叠?



