不用send和recv,服务器端socket如何知道客户端已经断开?
我的socket不是基于windows消息的异步socket!

解决方案 »

  1.   

    一般来说是靠recv来返回socket_error的,可如果不用的话,我只有一个龌龊的办法了:
    如同netstat -an命令一样,你可以看到现在所有的本机连接情况,在windows api中用的是gettcptable()
    和getudptable()(加装sdk),你可以通过连接的状态判断某个client是否断掉了。
    方法真不太好。帮你up,期待正解!
      

  2.   

    如果你的SOCKET是基于事件模型的,你调用WSAWaitForMultipleEvents函数会收到一个FD_CLOSE消息.收到之后关闭该SOCKET即可.
      

  3.   

    softrain(敢笑杨过不痴情) :
    我的socket不是基于windows消息的异步socket!而且我只做服务端,客户端是别人以前做好了的,所以我也不想定时发送什么包来测试连接,怕会影响客户端的接收。
      

  4.   

    fisker0303(天塌了,地陷了,小花狗不见了.):
    客户端不是我做的,所以我不想发送一些不想干的数据去影响它接收。你有什么办法让我发送心跳包又不应它接收数据吗?
      

  5.   

    fisker0303(天塌了,地陷了,小花狗不见了.):
    大虾救命!
      

  6.   

    tangrh(阿唐):
    你没看见我上面说的吗?
    我的socket不是异步的!