那位兄弟知道从服务器端如何知道客户端掉线:主动离线和意外断线,能不能给出个例子,十分感谢!

解决方案 »

  1.   

    TCP么?连接断开(不管什么情况的断开) recv都会收到应答包的
      

  2.   

    WSAAsyncselect ->FD_CLOSE事件,客户端从容关闭shutdown服务器就会接收到FD_CLOSE事件,在Fd_Close事件里关闭closesocket(c_socket)!
      

  3.   

    服务器要要求客户定时发送keepalive包,如果一段时间没有发送则认为已经掉线
      

  4.   

    同楼上~~~~
    UDP发心跳包
    TCP的话心跳包+FD_CLOSE事件
      

  5.   

    使用WSAAsyncSelect(SOCKET s,           
      HWND hWnd,          
      unsigned int wMsg,  
      long lEvent  );
    s是要接收消息通知的Socket,hWnd是接收的窗口句柄,wMsg是自定义消息,用来接收网络事件的,lEvent是要关注的网络事件
    lEvent 设置FD_CLOSE即可。在Fd_Close处理事件里关闭closesocket
      

  6.   

    打开SO_KEEPALIVE套接口选项但这通常是客户端用
    但是服务器端也有用的,比如ftp服务器那样的