当客户端联接服务器之后
当客户端断开与服务器的连接服务器端会触发什么事件吗
是不是应该是FD_CLOSE但是没有触发请各位大哥指点

解决方案 »

  1.   

    是啊。要判断参数LPARAM lParam。如下:
    OnReceive(WPARAM wParam ,LPARAM lParam)
    {
    switch(WSAGETSELECTEVENT(lParam))
    {
    case FD_ACCEPT:
    break;
    case FD_READ:
    break;
    case FD_WRITE:
    break;
    case FD_CLOSE:
    closesocket(wParam);
    wParam = NULL;
    ...
    return;
    break;
    }
    ...
    }
      

  2.   

    不可能。我都用过。你能收到消息吗。
    你加了以下代码吗?
    afx_msg void OnReceive(WPARAM wParam ,LPARAM lParam);
    #define WM_SOCKET (WM_USER+1)
    ON_MESSAGE(WM_SOCKET, OnReceive)
      

  3.   

    加了FD——READ
    可以收到但是客户端关闭之后就是没有收到FD——CLOSE在选择的时候也加了FD——READ|FD——WRITE|FD——CLSOE应该都没有问题是吧
      

  4.   


    if(WSAGETSELECTERROR(lParam))
    {
    closesocket(wParam);
    wParam = NULL;
    }
    加在OnReceive的前面看看是什么问题。
      

  5.   

    WSAGETSELECTERROR(lParam)的返回值包含了可能出现的错误代码。