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