客户端只用connect服务端
但是客户端如果想关闭怎么办呢....
如果直接关闭会发错一个连接异常 目的:
想在服务器 得到每个退出的客户端的IP

解决方案 »

  1.   

    WSAEventSelect模型应该做到,客户端退出后,服务端会收到FD_CLOSE消息,然后就可以判断了
      

  2.   

    客户端退出后
    服务器直接执行下面了...
    if (WSAGETSELECTERROR(lParam))  
    {  
    MessageBox("连接失败~ 请检查服务器之间的链接 请重新运行程序");
    //closesocket(wParam);  

      

  3.   

    WSAEventSelect是可以做到的,1楼说的很对
      

  4.   

    recv 接受到消息后  可以接受到客户端正常退出消息 。和 模型无关 看看 MSDN recv的说明 If no error occurs, recv returns the number of bytes received. If the connection has been gracefully closed, the return value is zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.
      

  5.   

    而且服务器就算收到FD_CLOSE
    也只能得到套接字对象
    我怎么分辨是谁退出的
      

  6.   

    可以得到FD_CLOSE消息了
    怎么得到是那个客户短呢
    因为我有一个listbox显示正在连接的客户端IP
      

  7.   

    好像需要个sockaddr_in数组,保存client 信息,跟WSAEVENT数组是有关系的,应该是得到了哪个客户的CLOSE事件,然后找到对应的client信息。
    大概是这样,可以找找看,具体忘了
      

  8.   

    其实还是需要你自己保存client信息,然后建立某种对应关系的
      

  9.   

    现在是只能得到 SOCKET
    但是
     SOCKET怎么比较?
     试了下 将SOCKET关联到 ADD
    但是 无法比较SOCKET
      

  10.   

    socket直接用等号比较话说得到socket后可以用某个函数得到对端的地址吧