使用TCP当客户端执行
::closesocket(s);
::WSACleanup();
之后,是否会向服务器发送一个断开连接的消息好让服务器释放套接字重新开始监听?
服务器端如何判断连接断开?

解决方案 »

  1.   

    如果是WINDOWS窗口程序就比较简单,
    可以使用 WSAAsyncSelect 函数
    异步IO,FD_CLOSE通知码
      

  2.   

    recv 的返回值,看看MSDN的说明!
      

  3.   


    服务器端recv返回值为0就表示客户端断开了连接但跟监听是没有关系的,服务器端负责监听的socket一直都在监听,没有重新开始监听这么一说服务器需要释放的socket是与客户端通信得socket
      

  4.   

    客户端执行
    ::closesocket(s_in);
    ::WSACleanup();
    之后,服务器端似乎并没有检测到断开,if(::revc(s,sztext,48,NULL)==0)并没有被触发
    是不是客户端应该发出一个断开连接的请求呢?应该怎样写?