CAsyncSocket::Accept

virtual BOOL Accept( CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpScokAddrLen = NULL);

返回值:
如果函数是成功的,则返回非零值,否则为0。可以通过调用GetLastError获取指定的错误代码。此成员函数可用的错误如下:
WSANOTINITIALISED在使用此API之前,必须有成功的AfxSocketInit发生。
WSAENETDOWNWindows Socket实现可以查明网络子系统的失败。
WSAEFAULTlpSockAddrLen参数太小了(小于SOCKADDR结构)。
WSAEINPROGRESS成块Windows套接字调用正在进行中。
WSAEINVAL在接收之前没有侦听。
WSAEMFILE在接受入口处队列为空,并且没有有效的描述符。
WSAENOBUFS没有有效的缓冲区空间。
WSAENOTSOCK描述符不是套接字。
WSAEOPNOTSUPP应用的套接字不是支持面向连接服务的类型。
WSAEWOULDBLOCK套接字被标明为非成块状态,并且目前没有被接收的连接。

参数:
rConnectedSocket定义了对连接有效的新的套接字的参考。
lpSockAddrSOCKADDR结构的指针,它接收连接套接字的地址,就象在网络中已知的那样。当套接字被创建时,建立的地址体系确定lpSockAddr参数的格式。如果lpSockAddr和/或lpSockAddrLen等于NULL,则没有接受套接字的远程地址的信息返回。
lpSockAddrLen指向lpSockAddr中地址的字节长度的指针。lpSockAddr是返回值型参数:初始时,它应该包括通过lpSockAddr指向的一些空间;返回时,它应该包括返回地址的实际字节长度。

说明:
调用此成员函数,接受套接字上的连接。此例程获取挂起连接队伍中的连接,创建与此套接字特性相同的新套接字并将其附加给rConnectedSocket。如果队列中没有正挂起的连接,Accept为0。GetLastError返回错误。被接受的套接字(rConnectedSocket)不能用于接受多个连接。原先的套接字保持打开和侦听的状态。
lpSocketAddr是结果参数,其值为连接套接字的地址,正如所知的通信层一样。Accept用于基于连接的套接字类型,例如SOCK_STREAM。

请参阅:
CAsyncSocket::Bind, CAsyncSocket::Connect, CAsyncSocket::Listen, CAsyncSocket::Create, ::WSAAsyncSelect