- 论坛徽章:
- 0
|
val = fcntl(sockfd, F_GETFL, NULL);
val |= O_NONBLOCK;
fcntl(sockfd, F_SETFL, val);
/* connect to ca */
is_Err_Connect = connect(sockfd, (struct sockaddr*)&addr_server, sizeof(addr_server));
if(is_Err_Connect < 0)
{
if(EINPROGRESS != errno)
{
close(sockfd);
return -1;
}
time_Connect.tv_set = 3;
time_Connect.tv_uset = 0;
FD_ZERO(&Sock_Fds);
FD_SET(sockfd, &Sock_Fds);
maxfd = sockfd + 1;
iRet_Select = select(maxfd, NULL, &Sock_Fds, NULL, &time_Connect);
if(iRet_Select > 0)
{
iget_Sockopt = getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &iOpt_Val, &sock_len);
if(ERROR_SUCCESS != iget_Sockopt)
{
close(sockfd);
return -1;
}
if(ERROR_SUCCESS != iOpt_Val)
{
close(sockfd);
return -1;
}
}
else
{
close(sockfd);
return -1;
}
}
else
{
close(sockfd);
return -1;
}
有个问题,
getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &iOpt_Val, &sock_len);
第四个参数iOpt_Val没有变化,始终为初始值。为啥啊。。。郁闷了
|
|