linux下非阻塞模式网络通讯模型示例分享

2019-09-30 18:53:16刘景俊

        // 表示在建立连接但还没有完成。
        if ( 0 != iResult ) // 成功则返回零(0)
        {
            // 内核中对 connect 有超时限制是 75 秒,为了加快反应速度此处设为750毫秒。
            // 注:无论连接与否,都会返回可写,除非有错误发生,这里仅是缩短等待连接的时间而已。
            iResult = wait_rw_able( iServerSocket,
                                    false,     // 是否可写
                                    750000  ); // 750毫秒
            if ( 0 != iResult )
            {
                DEBUG_OUTPUT( "Can't write in asynchronization" );

                iResult = -4;
                break;
            }

            if ( 0 > getsockopt( iServerSocket,
                                 SOL_SOCKET,
                                 SO_ERROR,
                                 &iSo_Error,
                                 &So_Error_len ) )
            {
                DEBUG_OUTPUT( "Call getsockopt is failed" );

                iResult = -5;