23,120
社区成员
发帖
与我相关
我的任务
分享
rtv = connect(sockfd,(struct sockaddr *)&dest_addr, sizeof(struct sockaddr));
if(rtv == 0)
{
return sockfd;
}
if(errno != EINTR) //EINPROGRESS
{
close(sockfd);
return(-1);
}
if(rtv < 0)
{
struct timeval tv;
tv.tv_sec = 10;
tv.tv_usec = 0;
FD_ZERO (&wfd);
FD_ZERO(&rset);
FD_SET(sockfd,&rset);
FD_SET (sockfd, &wfd);
if (select (sockfd + 1,&wfd, NULL, NULL, &tv) == 0)
{
close(sockfd);
return -1;
}
int len = sizeof (error);
if(getsockopt(sockfd,SOL_SOCKET,SO_ERROR,&error,&len) < 0)
{
close(sockfd);
return(-1);
}
return(sockfd);
}