+ -
当前位置:首页 → 问答吧 → 帮忙看下这段设置connect超时的代码

帮忙看下这段设置connect超时的代码

时间:2010-08-25

来源:互联网

  1. if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) == -1)
  2. {
  3.     if (errno == EINPROGRESS)
  4.     {
  5.         tv.tv_sec = 10;
  6.         tv.tv_usec = 0;
  7.         FD_ZERO(&writefds);
  8.         FD_SET(s, &writefds);
  9.         if(select(s+1, NULL, &writefds, NULL, &tv)>0)
  10.         {
  11.             if (FD_ISSET(s, &writefds))
  12.             {
  13.                 int len = sizeof(err);
  14.                 getsockopt(s, SOL_SOCKET, SO_ERROR, &error, &len);
  15.                 if (error == 0)
  16.                     return s;
  17.                 else
  18.                     goto done;  //一路执行到这里,也没有等待,有问题吗?
  19.             }
  20.             else
  21.                 goto done;
  22.         }
  23.         else
  24.             goto done;
  25.     }
  26.     else
  27.         goto done;
  28. }
  29. else
  30. return s;
复制代码

作者: anyc   发布时间: 2010-08-25

要等待啥?前面select不是已经等了么

作者: hellioncu   发布时间: 2010-08-25



QUOTE:
要等待啥?前面select不是已经等了么
hellioncu 发表于 2010-08-25 16:53




    我就是说select没有等,直接就执行到这里了

作者: anyc   发布时间: 2010-08-25

select>0之后要么连上了,要么被拒绝了

作者: hellioncu   发布时间: 2010-08-25