Share via


Fonction de rappel LPWSPGETSOCKOPT (ws2spi.h)

La fonction LPWSPGetSockOpt récupère une option de socket.

Syntaxe

LPWSPGETSOCKOPT Lpwspgetsockopt;

int Lpwspgetsockopt(
  SOCKET s,
  int level,
  int optname,
  char *optval,
  LPINT optlen,
  LPINT lpErrno
)
{...}

Paramètres

s

Descripteur identifiant un socket.

level

Niveau auquel l’option est définie ; les niveaux pris en charge incluent SOL_SOCKET. (Voir l’annexe pour d’autres niveaux spécifiques au protocole.)

optname

Option de socket pour laquelle la valeur doit être récupérée.

optval

Pointeur vers la mémoire tampon dans laquelle la valeur de l’option demandée doit être retournée.

optlen

Pointeur vers la taille, en octets, de la mémoire tampon optval .

lpErrno

Pointeur vers le code d’erreur.

Valeur retournée

Si aucune erreur ne se produit, LPWSPGetSockOpt retourne zéro. Sinon, la valeur 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é.
WSAEFAULT
L’un des paramètres optval ou optlen n’est pas une partie valide de l’espace d’adressage utilisateur, ou le paramètre optlen est trop petit.
WSAEINVAL
Le niveau est inconnu ou non valide.
WSAEINPROGRESS
La fonction est appelée lorsqu’un rappel est en cours.
WSAENOPROTOOPT
L’option est inconnue ou non prise en charge par la famille de protocoles indiquée.
WSAENOTSOCK
Le descripteur n’est pas un socket.

Remarques

La fonction LPWSPGetSockOpt récupère la valeur actuelle d’une option de socket associée à un socket de tout type, dans n’importe quel état, et stocke le résultat dans optval. Les options peuvent exister à plusieurs niveaux de protocole, mais elles sont toujours présentes au niveau du socket le plus élevé. Les options affectent les opérations de socket, telles que le routage des paquets et le transfert de données OOB.

La valeur associée à l’option sélectionnée est retournée dans l’optval de la mémoire tampon. L’entier pointé par optlen doit initialement contenir la taille de cette mémoire tampon ; lors du retour, elle sera définie sur la taille de la valeur retournée. Pour SO_LINGER, il s’agit de la taille d’une structure persistante ; pour la plupart des autres options, il s’agit de la taille d’un entier.

Le client SPI Windows Sockets est chargé d’allouer tout espace mémoire pointé directement ou indirectement par l’un des paramètres qu’il spécifie.

Si l’option n’a jamais été définie avec LPWSPSetSockOpt, LPWSPGetSockOpt retourne la valeur par défaut de l’option.

Pour plus d’informations sur les options de socket, consultez Options de socket.

level = SOL_SOCKET

Valeur Type Signification Default
SO_ACCEPTCONN BOOL Le socket écoute via LPWSPListen. FALSE , sauf si un LPWSPListen a été effectué.
SO_BROADCAST BOOL Le socket est configuré pour la transmission et la réception des messages de diffusion. FALSE
SO_DEBUG BOOL Le débogage est activé. FALSE
SO_DONTLINGER BOOL Si la valeur est true, l’option SO_LINGER est désactivée. TRUE
SO_DONTROUTE BOOL Le routage est désactivé. La définition de cette option de socket réussit, mais est ignorée sur les sockets AF_INET ; échoue sur AF_INET6 sockets avec WSAENOPROTOOPT . Cette option n’est pas prise en charge sur les sockets ATM (génère une erreur). FALSE
SO_ERROR entier Récupère les status d’erreur et efface. 0
SO_GROUP_ID GROUP Réservé. Null
SO_GROUP_PRIORITY entier Réservé. 0
SO_KEEPALIVE BOOL Des keepalives sont envoyés. Non pris en charge sur les sockets ATM (génère une erreur). FALSE
SO_LINGER Structure LINGER Retourne les options persistantes actuelles. 1 est activé (par défaut), 0 est désactivé
SO_MAX_MSG_SIZE entier non signé Taille maximale d’un message pour les types de sockets orientés message (par exemple, SOCK_DGRAM). N’a aucune signification pour les sockets orientés flux. Dépendant de l’implémentation
SO_OOBINLINE BOOL Les données OOB sont reçues dans le flux de données normal. FALSE
SO_PROTOCOL_INFO WSAPROTOCOL_INFO structure Description des informations de protocole pour le protocole lié à ce socket. Dépendant du protocole
SO_RCVBUF entier Espace tampon total par socket réservé aux réceptions. Cela n’est pas lié à SO_MAX_MSG_SIZE et ne correspond pas nécessairement à la taille de la fenêtre de réception TCP. Dépendant de l’implémentation
SO_REUSEADDR BOOL Le socket peut être lié à une adresse déjà utilisée. Cette option n’est pas applicable sur les sockets ATM. FALSE.
SO_SNDBUF entier Espace tampon total par socket réservé aux envois. Cela n’est pas lié à SO_MAX_MSG_SIZE et ne correspond pas nécessairement à la taille d’une fenêtre d’envoi TCP. Dépendant de l’implémentation
SO_TYPE entier Type de socket (par exemple, SOCK_STREAM). Tel que créé avec LPWSPSocket">LPWSPSocket
PVD_CONFIG Dépendant du fournisseur de services Objet de structure de données opaque du fournisseur de services associé aux sockets. Cet objet stocke les informations de configuration actuelles du fournisseur de services. Le format exact de cette structure de données est propre au fournisseur de services. Dépendant de l’implémentation

 

L’appel de LPWSPGetSockOpt avec une option non prise en charge entraîne le retour d’un code d’erreur WSAENOPROTOOPT dans lpErrno.

SO_DEBUG

Les fournisseurs de services Windows Sockets sont encouragés (mais pas obligatoires) à fournir des informations de débogage de sortie si l’option SO_DEBUG est définie par un client SPI Windows Sockets. Le mécanisme permettant de générer les informations de débogage et la forme qu’il prend dépassent la portée de cette spécification.

SO_ERROR

L’option SO_ERROR retourne et réinitialise le code d’erreur par socket (qui n’est pas nécessairement identique au code d’erreur par thread qui est géré par le WS2_32.DLL). Un appel de sockets Windows réussi sur le socket ne réinitialise pas le code d’erreur basé sur le socket retourné par l’option SO_ERROR.

SO_GROUP_ID

Réservé. Cette valeur doit être NULL.

SO_GROUP_PRIORITY

Réservé.

SO_KEEPALIVE

Un client SPI Windows Sockets peut demander à un fournisseur de services TCP/IP d’activer l’utilisation de paquets keep-alive sur les connexions TCP en activant l’option de socket SO_KEEPALIVE . Un fournisseur Windows Sockets n’a pas besoin de prendre en charge l’utilisation de keep-alives : si c’est le cas, la sémantique précise est spécifique à l’implémentation, mais doit être conforme à la section 4.2.3.6 de la RFC 1122 : Exigences pour les hôtes Internet - Couches de communication. (Cette ressource ne peut être disponible qu’en anglais.) Si une connexion est supprimée à la suite de conservations actives, le code d’erreur WSAENETRESET est retourné à tous les appels en cours sur le socket, et tous les appels suivants échouent avec WSAENOTCONN .

SO_LINGER

SO_LINGER contrôle l’action effectuée lorsque des données non en attente sont mises en file d’attente sur un socket et qu’un LPWSPCloseSocket est effectué. Consultez LPWSPCloseSocket pour obtenir une description de la façon dont les paramètres SO_LINGER affectent la sémantique de LPWSPCloseSocket. Le client SPI Windows Sockets obtient le comportement souhaité en créant une structure LINGER (pointée par le paramètre optval ) avec les éléments suivants :

}

SO_MAX_MSG_SIZE

Il s’agit d’une option de socket get-only, qui indique la taille maximale d’un message d’envoi sortant pour les types de sockets orientés message (par exemple, SOCK_DGRAM) implémenté par le fournisseur de services. Il n’a aucune signification pour les sockets orientés flux d’octets. Il n’existe aucune disposition permettant de déterminer la taille maximale des messages entrants.

SO_PROTOCOL_INFOW

Il s’agit d’une option get-only qui fournit la structure WSAPROTOCOL_INFO associée à ce socket. Pour plus d’informations sur cette structure, consultez WSCEnumProtocols .

SO_SNDBUF

Lorsqu’un fournisseur de services Windows Sockets prend en charge les options SO_RCVBUF et SO_SNDBUF, un client SPI Windows Sockets peut utiliser LPWSPSetSockOpt pour demander différentes tailles de mémoire tampon (plus grandes ou plus petites). L’appel peut réussir même si le fournisseur de services n’a pas mis à disposition la totalité du montant demandé. Un client SPI Windows Sockets doit appeler cette fonction avec la même option pour case activée la taille de mémoire tampon réellement fournie.

SO_REUSEADDR

Par défaut, un socket ne peut pas être lié (voir LPWSPBind) à une adresse locale déjà utilisée. Toutefois, à l’occasion, il peut être souhaitable de réutiliser une adresse de cette façon. Étant donné que chaque connexion est identifiée de manière unique par la combinaison d’adresses locales et distantes, il n’y a aucun problème avec le fait d’avoir deux sockets liés à la même adresse locale tant que les adresses distantes sont différentes. Pour informer le fournisseur Windows Sockets qu’un LPWSPBind sur un socket doit être autorisé à se lier à une adresse locale déjà utilisée par un autre socket, le client SPI Windows Sockets doit définir l’option de socket SO_REUSEADDR pour le socket avant d’émettre le LPWSPBind. Notez que l’option est interprétée uniquement au moment de LPWSPBind. Il est donc inutile (mais inoffensif) de définir l’option sur un socket qui ne doit pas être lié à une adresse existante, et la définition ou la réinitialisation de l’option après le LPWSPBind n’a aucun effet sur ce socket ou sur tout autre socket.

PVD_CONFIG

Cette option récupère un objet de structure de données opaque à partir du fournisseur de services associé aux sockets. Cet objet stocke les informations de configuration actuelles du fournisseur de services. Le format exact de cette structure de données est spécifique au fournisseur de services.

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

LPWSPSetSockOpt

LPWSPSocket