CAsyncSocket::Listen

BOOL Listen( int nConnectionBacklog = 5 );

返回值:
调用成功时返回非零值,否则为0,并且可以调用GetLastError获取特定的错误代码。此成员函数可用的错误代码有:
·WSANOTINITIALISED调用本API函数之前必须成功执行了AfxsockInit函数。
·WSAENETDOWNWindows Sockets检测到网络系统故障。
·WSAEADDRINUSE试图监听一个已经使用的地址。
·WSAEINPROGESS正在进行成块的Windows Sockets操作。
·WSAEINVAL套接字已经连接或者没有用Bind绑定。
·WSAEISCONN套接字已经连接。
·WSAEMFILE没有可用的文件描述符。
·WSAENOBUFS没有足够的缓冲空间。
·WSAENOTSOCK描述符不是一个套接字。
·WSAEOPNOTSUPP该类型的套接字不支持Listen操作。

参数:
nConnectionBacklog待处理连接的队列所允许达到的最大长度,有效值为1~5。

说明:
本成员函数用来监听到来的连接请求。接收连接要先调用Create建立套接字,用Listen指明记录即将连接的后台日志(backlog),然后调用Accept接受连接。Listen仅对那些支持连接的套接字起作用,也就是SOCK_STREAM类型的套接字。在进程应答连接并把它放到等待队列时,套接字被置成被动模式(passive mode)。
本函数一般由那些一次可以有多个连接的服务器使用(或任何需要接收连接的应用)。如果连接请求到达时,队列已满,客户端会接到一个错误信息,指明是WSAECONNREFUSED错误。
在没有可用端口(描述符)时,Listen将继续监听。它将接受连接,直到队列被清空。如果有可用端口,此后的Listen或Accept调用将重新把队列填充成当前或日志指定的最近的状态,然后挂起,等待以后的连接。

请参阅:
CAsyncSocket::Accept, CAsyncSocket::Connect, CAsyncSocket::Create