Compartir a través de


CAsyncSocket::Accept

Llame a esta función miembro para aceptar una conexión en un socket.

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

Parámetros

  • rConnectedSocket
    Una referencia que identifica un nuevo socket disponible para la conexión.

  • lpSockAddr
    Un puntero a una estructura de SOCKADDR que recibe la dirección del socket de conexión, tal como se conocido en la red. El formato exacto del argumento de lpSockAddr viene determinado por la familia de dirección establecida cuando el socket se creó. Si lpSockAddr y/o lpSockAddrLen es igual a NULL, no se devuelve ninguna información sobre la dirección remota de socket aceptado.

  • lpSockAddrLen
    un puntero a la longitud de la dirección en lpSockAddr en bytes. lpSockAddrLen es un parámetro del siguiente valor resultado: debe contener inicialmente la cantidad de espacio designada por a lpSockAddr; al volver contendrá la longitud real (en bytes) de la dirección devuelta.

Valor devuelto

Distinto de cero si la función es correcta; si no 0, y un código de error específico puede recuperar llamando a GetLastError. Los errores siguientes se aplican a esta función miembro:

  • WSANOTINITIALISED A AfxSocketInit correcto debe aparecer antes de utilizar esta API.

  • La implementación de Windows Sockets deWSAENETDOWN The detectó que produjo el subsistema de la red.

  • El argumento deWSAEFAULT The lpSockAddrLen es demasiado pequeño (menor que el tamaño de una estructura de SOCKADDR ).

  • La llamada de Windows Sockets de bloqueo deWSAEINPROGRESS A está en curso.

  • WSAEINVAL   Listen no se invoca antes de acepta.

  • La cola deWSAEMFILE No está vacía a la entrada aceptar y no hay descriptores disponibles.

  • WSAENOBUFS ningún espacio en búfer está disponible.

  • WSAENOTSOCK El descriptor no es un socket.

  • El socket hace referencia speedWSAEOPNOTSUPP no es un tipo que admita servicio orientado a la conexión.

  • El socket deWSAEWOULDBLOCK The se marca como sin bloquear y no hay conexiones presentes ser aceptado.

Comentarios

Esta rutina extrae la primera conexión en la cola de conexiones pendientes, crea un nuevo socket con las mismas propiedades que este socket, y lo asocia a rConnectedSocket. Si no hay conexiones pendientes presentes en la cola, Accept devuelve cero y GetLastError devuelve un error. El socket aceptado (rConnectedSocket) no se puede utilizar para aceptar varias conexiones. El socket original permanece abierto y realizar escuchas.

El argumento lpSockAddr es un parámetro de resultado que se rellena con la dirección del socket de conexión, tal como se conocido a las comunicaciones capas. Accept se utiliza con los tipos conexión- basados de socket como SOCK_STREAM.

Requisitos

encabezado: afxsock.h

Vea también

Referencia

CAsyncSocket Class

Gráfico de jerarquías

CAsyncSocket::Bind

CAsyncSocket::Connect

CAsyncSocket::Listen

CAsyncSocket::Create

WSAAsyncSelect