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 |
---|---|
Le sous-système réseau a échoué. | |
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. | |
Le niveau est inconnu ou non valide. | |
La fonction est appelée lorsqu’un rappel est en cours. | |
L’option est inconnue ou non prise en charge par la famille de protocoles indiquée. | |
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é.
-
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