Función de devolución de llamada LPWSPLISTEN (ws2spi.h)

La función LPWSPListen establece un socket para escuchar las conexiones entrantes.

Sintaxis

LPWSPLISTEN Lpwsplisten;

int Lpwsplisten(
  [in]  SOCKET s,
  [in]  int backlog,
  [out] LPINT lpErrno
)
{...}

Parámetros

[in] s

Descriptor que identifica un socket enlazado y no conectado.

[in] backlog

Longitud máxima a la que puede aumentar la cola de conexiones pendientes. Si este valor es SOMAXCONN, el proveedor de servicios debe establecer el trabajo pendiente en un valor máximo "razonable". No hay ninguna aprovisionamiento estándar para averiguar el valor real del trabajo pendiente.

[out] lpErrno

Puntero al código de error.

Valor devuelto

Si no se produce ningún error, LPWSPListen devuelve cero. De lo contrario, se devuelve un valor de SOCKET_ERROR y hay disponible un código de error específico en lpErrno.

Código de error Significado
WSAENETDOWN
Error en el subsistema de red.
WSAEADDRINUSE
La dirección local del socket ya está en uso y el socket no se marcó para permitir la reutilización de direcciones con SO_REUSEADDR. Este error suele producirse en el momento de Bind, pero podría retrasarse hasta que esta función si el **bind** fuera a una dirección con caracteres comodín parcial (que implique ADDR_ANY) y si es necesario confirmar una dirección específica en el momento de esta función.
WSAEINPROGRESS
La función se invoca cuando una devolución de llamada está en curso.
WSAEINVAL
El socket no se ha enlazado con LPWSPBind.
WSAEISCONN
el socket ya está conectado.
WSAEMFILE
No hay más descriptores de socket disponibles.
WSAENOBUFS
No hay espacio disponible en el búfer.
WSAENOTSOCK
El descriptor no es un socket.
WSAEOPNOTSUPP
El socket al que se hace referencia no es de un tipo que admite la operación LPWSPListen .

Comentarios

Para aceptar conexiones, primero se crea un socket con LPWSPSocket enlazado a una dirección local con LPWSPBind, se especifica un trabajo pendiente para las conexiones entrantes con LPWSPListen y, a continuación, las conexiones se aceptan con LPWSPAccept. LPWSPListen solo se aplica a los sockets orientados a la conexión (por ejemplo, SOCK_STREAM). El socket s se coloca en modo pasivo donde el cliente SPI de Windows Sockets reconoce y pone en cola las solicitudes de conexión entrantes.

Normalmente, los servidores que pueden tener más de una solicitud de conexión a la vez usan esta función: si una solicitud de conexión llega con la cola llena, el cliente recibirá un error con una indicación de WSAECONNREFUSED.

LPWSPListen debe seguir funcionando racionalmente cuando no hay descriptores disponibles. Debe aceptar conexiones hasta que se vacía la cola. Si los descriptores están disponibles, una llamada posterior a LPWSPListen o LPWSPAccept rellenará la cola en el trabajo pendiente actual o más reciente, si es posible, y reanudará la escucha de las conexiones entrantes.

Un cliente SPI de Windows Sockets puede llamar a LPWSPListen más de una vez en el mismo socket. Esto tiene el efecto de actualizar el trabajo pendiente actual para el socket de escucha. Si hay más conexiones pendientes que el nuevo valor de trabajo pendiente , las conexiones pendientes excesivas se restablecerán y quitarán.

El parámetro backlog está limitado (silenciosamente) a un valor razonable determinado por el proveedor de servicios. Los valores no válidos se reemplazan por el valor legal más cercano. No hay ninguna aprovisionamiento estándar para averiguar el valor real del trabajo pendiente.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado ws2spi.h

Consulte también

LPWSPAccept

LPWSPConnect

LPWSPSocket