Share via


Fonction de rappel LPWSPLISTEN (ws2spi.h)

La fonction LPWSPListen établit un socket pour écouter les connexions entrantes.

Syntaxe

LPWSPLISTEN Lpwsplisten;

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

Paramètres

[in] s

Descripteur identifiant un socket lié et non connecté.

[in] backlog

Longueur maximale à laquelle la file d’attente des connexions en attente peut augmenter. Si cette valeur est SOMAXCONN, le fournisseur de services doit définir le backlog sur une valeur « raisonnable » maximale. Il n’existe aucune provision standard pour connaître la valeur réelle du backlog.

[out] lpErrno

Pointeur vers le code d’erreur.

Valeur retournée

Si aucune erreur ne se produit, LPWSPListen retourne zéro. Sinon, une valeur de SOCKET_ERROR est retournée et un code d’erreur spécifique est disponible dans lpErrno.

Code d'erreur Signification
WSAENETDOWN
Le sous-système réseau a échoué.
WSAEADDRINUSE
L’adresse locale du socket est déjà utilisée et le socket n’a pas été marqué pour permettre la réutilisation des adresses avec SO_REUSEADDR. Cette erreur se produit généralement au moment de Bind, mais peut être retardée jusqu’à cette fonction si le **bind** était à une adresse générique partielle (impliquant ADDR_ANY) et si une adresse spécifique doit être validée au moment de cette fonction.
WSAEINPROGRESS
La fonction est appelée lorsqu’un rappel est en cours.
WSAEINVAL
Le socket n’a pas été lié à LPWSPBind.
WSAEISCONN
Le socket est déjà connecté.
WSAEMFILE
Aucun descripteur de socket supplémentaire n'est disponible.
WSAENOBUFS
Aucune zone tampon disponible.
WSAENOTSOCK
Le descripteur n’est pas un socket.
WSAEOPNOTSUPP
Le socket référencé n’est pas d’un type qui prend en charge l’opération LPWSPListen .

Remarques

Pour accepter les connexions, un socket est d’abord créé avec LPWSPSocket lié à une adresse locale avec LPWSPBind, un backlog pour les connexions entrantes est spécifié avec LPWSPListen, puis les connexions sont acceptées avec LPWSPAccept. LPWSPListen s’applique uniquement aux sockets orientés connexion (par exemple, SOCK_STREAM). Les sockets sont placés en mode passif, où les demandes de connexion entrantes sont acceptées et mises en file d’attente en attente d’acceptation par le client SPI Windows Sockets.

Cette fonction est généralement utilisée par les serveurs qui peuvent avoir plusieurs demandes de connexion à la fois : si une demande de connexion arrive avec la file d’attente complète, le client reçoit une erreur avec une indication de WSAECONNREFUSED.

LPWSPListen doit continuer à fonctionner de manière rationnelle lorsqu’il n’y a pas de descripteurs disponibles. Il doit accepter les connexions jusqu’à ce que la file d’attente soit vidée. Si des descripteurs deviennent disponibles, un appel ultérieur à LPWSPListen ou LPWSPAccept recharge la file d’attente vers le backlog actuel ou le plus récent, si possible, et reprend l’écoute des connexions entrantes.

Un client SPI Windows Sockets peut appeler LPWSPListen plusieurs fois sur le même socket. Cela a pour effet de mettre à jour le backlog actuel pour le socket d’écoute. S’il y a plus de connexions en attente que la nouvelle valeur du backlog , les connexions en attente excédentaires sont réinitialisées et supprimées.

Le paramètre backlog est limité (en mode silencieux) à une valeur raisonnable déterminée par le fournisseur de services. Les valeurs non valides sont remplacées par la valeur légale la plus proche. Il n’existe aucune provision standard pour connaître la valeur réelle du backlog.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
En-tête ws2spi.h

Voir aussi

LPWSPAccept

LPWSPConnect

LPWSPSocket