术语 | CAsyncSocket::ReceiveFrom | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
释义 | CAsyncSocket::ReceiveFrom int ReceiveFrom( void* lpBuf, int nBufLen, CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0 ); int ReceiveFrom( void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, int* lpSocketAddrLen, int nFlags = 0 ); 返回值:调用成功时返回读到的字节数。如果连接已经被关闭,则返回0;否则返回SOCKET_ERROR,可以调用GetLastError得到特定的错误代码。此成员函数可用的错误代码有:
参数:
说明: 本函数用于接收数据报,并把源地址存在SOCKADDR结构或者rSocketAddress指向的地址中。它读取套接字上的数据(可能是连接上的)并获得发送数据的地址。 对于SOCK_STREAM类型的套接字,返回缓冲中所有不超过缓冲大小的有效数据。如果套接字被设置成在线接收带外数据(套接字选项为SO_OOBINLINE),并且带外数据没有被读取,则仅仅返回带外数据。应用可以使用IOCtl的SIOCATMARK选项或者OnOutOfBandData来检测剩下的未读的带外数据。对于SOCK_STREAM类型的套接字,将忽略参数lpSockAddr和lpSockAddrLen。 对于数据报套接字,本函数从第一个入队的数据报中解出数据,发到缓冲中。如果数据报比缓冲大,则缓冲中仅包含数据报的前一部分,而丢弃其它的数据,ReceiveFrom返回SOCKET_ERROR,错误代码设成WSAEMSGSIZE。 如果lpSockAddr非零,并且套接字是SOCK_STREAM类型的,则发送数据的套接字的网络地址会被拷贝到相应的SOCKADDR结构中。lpSockAddrLen指向的值初始为该结构的大小,在函数返回时修改为所存储的实际地址的大小。如果套接字中读不到数据,并且是成块的,ReceiveFrom就会一直等待数据的到来。此时函数返回SOCKET_ERROR,错误代码被置为WSAEWOULDBLOCK。可以用回调函数OnReceive检测更多数据的到来。 如果套接字是SOCK_STREAM类型的,而远端已经正常地关闭连接,ReceiveFrom就会立即返回,接收的数据为0字节。 请参阅: CAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::Receive, CAsyncSocket::Send |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
随便看 |
|
MFC类库中文详解手册包含4274条MFC类库参考词条,基本涵盖了Microsoft基本类库中的类、全局函数、全局变量和宏的内容,是计算机编程的有利工具。