我用MFC做了一个服务器端程序,我需要知道当前哪些客户端在线,所以当客户端断开时服务器应该知道,但是Onclose只有正常关闭的socket才发,当非正常关闭时怎么判断呢?

解决方案 »

  1.   

    对你的 socket  进行判断啊
      

  2.   

    用select判断端口是否可以读或写fd_set  fd;
    FD_ZERO(&fd);
    FD_SET(s,&fd);//s就是该端口
    int n = 0;
    TIMEVAL tv;
    tv.tv_sec = 30;//超时设置
    tv.tv_usec = 0;
    n = select(NULL,NULL,&fd,NULL,&tv);//参数2,判断是否可读,参数3判断是否可写
     
    n==1表示正常
      

  3.   

    如果你注册了FD_CLOSE在正常退出情况下会产生关闭事件,如果意外断线可以通过send的反回值进行判断WSAETIMEDOUT