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

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

            // 返回负数为出错了,直接跳出不再等待尝试接收新数据
            if ( 0 > iResult )
            {
                DEBUG_OUTPUT_PARA( "Call recv is failed, return %d", iResult );

                iResult = -10;
                break;
            }

              // 接收数据时网络中断就会返回零(0)
              if ( 0 == iResult )
              {
                  break;
              }

            usRealReceivedData += iResult;

            // 传出参数所指缓冲区空间不足矣放下全部应签数据
            if ( usBufferLen <= usRealReceivedData )
            {
                DEBUG_OUTPUT( "pucSRBuffer is not superfluous space" );

                iResult = -11;
                break;
            }

        }while( 0 == wait_rw_able( iServerSocket,
                                   true,        // 是否可读
                                   750000  ) ); // 750毫秒

        // 收数据时出错了,则直接跳出返回
        if ( 0 > iResult )
        {
            break;
        }