用什么异常类可以捕获套接字类的异常啊???
不管是API还是MFC

解决方案 »

  1.   

    使用select函数,
    int select(
      int nfds,
      fd_set* readfds,
      fd_set* writefds,
      fd_set* exceptfds,
      const struct timeval* timeout
    );
    第四个参数就是捕捉异常的,当然也可以使用poll,这两个函数都可以跨平台使用
      

  2.   

    win32 API;
    Select();
    查一下MSDN吧
      

  3.   

    没有区别阿,MFC也支持普通的select和poll调用啊
      

  4.   

    bool CExSocketBase::Check(SOCKET sockfd, unsigned long dwTimesout, long nWaitFlags)
    {
    int ret;

    #ifdef OS_WIN
    fd_set fdarray;
    FD_ZERO(&fdarray);
    FD_SET((unsigned int)sockfd,&fdarray);
    long nTimeout = (long)dwTimesout;
    if(nWaitFlags)
    {
    timeval timeout;
    timeout.tv_sec = nTimeout/1000;
    timeout.tv_usec = nTimeout % 1000 * 1000;
    ret = select(sockfd + 1,0,0,&fdarray,&timeout);
    }
    else
    ret = select(sockfd + 1, 0, 0, &fdarray, NULL);

    if((int)ret == 1 && !FD_ISSET(sockfd,&fdarray))
    return false;
    #else
        pollfd fdarray;
        fdarray.fd = sockfd;
        fdarray.events = POLLERR;
        fdarray.revents = 0;
        ret = poll(&fdarray, 1, dwTimesout);
      if(ret == 0 && !(fdarray.revents&POLLERR))
    return  false;
    #endif
    return true;
    }