CAsyncSocket::Accept
调用该成员函数接受在套接字的连接。
virtual BOOL Accept(
CAsyncSocket& rConnectedSocket,
SOCKADDR* lpSockAddr = NULL,
int* lpSockAddrLen = NULL
);
参数
rConnectedSocket
标识为连接可用的新套接字的引用。lpSockAddr
用于接收连接的套接字地址的一 SOCKADDR 结构的指针,如了解在网络。 当套接字创建的,则地址族取决于 lpSockAddr 参数的具体布局建立的。 如果 lpSockAddr 和/或 lpSockAddrLen 与 NULL相等,则有关可接受的套接字的远程地址的信息不会返回。lpSockAddrLen
为地址的长度的指针在 lpSockAddr 的以字节为单位)。 lpSockAddrLen 是值结果参数:它最初应包含空间量指向由 lpSockAddr;在返回它将包含实际长度(以字节返回的)的地址。
返回值
非零,如果函数运行成功;否则0和特定错误代码可以通过调用 GetLastError检索。 下面的错误适用于此成员函数:
WSANOTINITIALISED 的成功的 AfxSocketInit 必须在使用此API之前发生。
WSAENETDOWN Windows套接字实现检测网络子系统失败。
WSAEFAULTlpSockAddrLen 参数太小(小于 SOCKADDR 结构的范围)。
块Windows套接字的WSAEINPROGRESS A调用正在进行。
WSAEINVAL Listen 尚未调用前面接受。
WSAEMFILE 队列为空在项接受,并没有可用的类型描述符。
WSAENOBUFS 没有缓冲区空间可用。
WSAENOTSOCK 描述符不是套接字。
WSAEOPNOTSUPP 引用的套接字不支持面向连接服务的类型。
WSAEWOULDBLOCK 套接字标记为未占用,并连接不存在接受。
备注
此实例将挂起的连接队列中的第一个连接,使用属性创建一个新的套接字和套接字此相同,并将它附加到 rConnectedSocket。 如果挂起的连接不存在队列,Accept 返回零,并 GetLastError 返回false。 接受的套接字(rConnectedSocket) 不能用于接受多连接。 原始套接字保持打开状态和侦听。
参数 lpSockAddr 是用连接的套接字的地址填充的结果参数,如为通信已知的分层。 Accept 使用基于连接的套接字类型(如 SOCK_STREAM。
要求
Header: afxsock.h