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

请参见

参考

CAsyncSocket选件类

层次结构图

CAsyncSocket::Bind

CAsyncSocket::Connect

CAsyncSocket::Listen

CAsyncSocket::Create

WSAAsyncSelect