请教各位大虾,使用CSocket时,服务器端如何侦测客户端异常退出。我的实例是客户端通过CSocket和服务器建立连接,并通讯。拔掉客户端网线,希望服务器端能够侦测到该错误并给出提示。曾经在网上找到过一个HasConnectionDropped函数,对于该情况不管用。郁闷。

解决方案 »

  1.   

    在客户端建立一个与服务器的TCP连接,如果客户端不能连接服务器,服务器立即出现异常。
      

  2.   

    const int WM_CLIENT_READCLOSE=WM_USER+101;
             ....
            ON_MESSAGE(WM_CLIENT_READCLOSE, OnClientReadClose) 
             ...
    m_ClientSocket = accept(...);
    WSAAsyncSelect(m_ClientSocket,m_hWnd,WM_CLIENT_READCLOSE,FD_READ|FD_CLOSE);
              ...
             LRESULT CServerView::OnClientReadClose(WPARAM wParam, LPARAM lParam)
             {
    switch (WSAGETSELECTEVENT(lParam))
    {
    case FD_READ:
    OnClientRead(wParam,lParam);
    break;
    case FD_CLOSE:
    OnClientClose(wParam,lParam);
    break;
    }
    return 0L;
             }
      

  3.   

    望client写信息,看能不能写入