<span style="font-size: 14px;">方法一:</span>
/*客户端设置非阻塞,然后判断链接是否成功*/
int SocketConnectWithTimeout
(
int mySocket,
struct mySocketaddr *adrs,
int adrsLen,
struct timeval *timeVal
)
{
int flag;
fd_set writeFds;
int remotPeerAdressLen;
struct mySocketaddr remotPeerAdress;
if(timeVal == NULL)
{
return (connect(mymySocket, adrs, adrsLen));
}
flag = fcntl(mySocket, F_GETFL, 0);
fcntl(mySocket, F_SETFL, flag | O_NONBLOCK);//修改当前的flag标志为给阻塞
//对于非阻塞式套接字,如果调用connect函数会之间返回-1(表示出错),且错误为EINPROGRESS,表示连接建立
if(connect(mySocket, adrs, adrsLen) < 0)
{
//当使用非阻塞模式的时候,如果链接没有被立马建立,则connect()返回EINPROGRESS
if(errno == EINPROGRESS)
{
//sel