{
DEBUG_OUTPUT( "Create socket is failed" );
iResult = -2;
break;
}
// 3.为了调用 connect 函数不阻塞,设置连接服务端的套接字为非阻塞模式
iValue = 1; //
iResult = ioctl( iServerSocket, // 服务端收发套接字
FIONBIO, // 设置或清除非阻塞I/O标志
&iValue ); // 零(0) - 清除,非零(0) - 设置
if ( 0 > iResult )
{
DEBUG_OUTPUT_PARA( "Call ioctl to set I/O asynchronization is failed, return %d",
iResult );
iResult = -3;
break;
}
sServerAddr.sin_family = AF_INET;
inet_pton( AF_INET,
m_caServerIP,
&sServerAddr.sin_addr );
sServerAddr.sin_port = htons( m_usServerPort );
// 4.连接服务端
iResult = connect( iServerSocket,
(sockaddr*)&sServerAddr,
sizeof( sServerAddr ) );
// 调用 connect 函数,正常情况下,因为 TCP 三次握手需要一些时间,
// 而非阻塞调用只要不能立即完成就会返回错误,所以这里会返回 EINPROGRESS ,










