CAsyncSocket::Receive的简介
函数功能描述:本函数用于从套接字获取数据
CAsyncSocket::Receive
virtual int Receive(void* lpBuf,int nBufLen, int nFlags = 0 );
返回值
调用成功时,返回接收到的字节数。如果连接被关闭了,返回0;否则返回SOCKET_ERROR,可以调用GetLastError得到特定的错误代码。此成员函数可用的错误代码有:
1 WSANOTINITIALISED 调用本API函数之前必须成功执行了AfxsocketInit函数。
2 WSAENETDOWN Windows Sockets检测到网络系统故障。
3 WSAENOTCONN 套接字没有连接上。
4 WSAEINPROGRESS 正在进行成块的Windows Sockets操作。
5 WSAENOTSOCK 描述符不是一个套接字
6 WSAEOPNOTSUPP 设置了MSG_OOB,但是套接字的类型不是SOCK_ STREAM。
7 WSAESHUTDOWN 套接字已经被关闭。调用ShutDown(参数nHow的值设为0或2)后,就不能在该套接字上调用Receive了。
8 WSAEWOULDBLOCK 套接字标志为非成块,而Receive操作将产生成块。
9 WSAEMSGSIZE 数据报太大,不能完全放到缓冲中,将被截断。
10 WSAEINVAL 套接字没有用Bind绑定。
11 WSAECONNABORTED 由于超时或其它故障使虚电路异常退出。
12 WSAECONNRESET 远端重置了虚电路。
输入数据的缓冲。
nBufLen
lpBuf的大小(字节数)。
nFlags
设置调用模式。本函数的语义由套接字选项和nFlags参数共同决定。nFlags由下面的任一个值组成,也可以用C++的OR操作符组合使用:
1 MSG_PEEK 把数据拷贝到缓冲,但不从输入队列上移走。
2 MSG_OOB 处理带外数据(请参阅联机文档“Win32 SDK”中的“Windows套接字编程注意事项)