option de socket SO_BSP_STATE
L’option de socket SO_BSP_STATE retourne l’adresse locale, le port local, l’adresse distante, le port distant, le type de socket et le protocole utilisés par un socket.
Pour effectuer cette opération, appelez la fonction getsockopt avec les paramètres suivants.
Valeur d’option de socket
La constante qui représente cette option de socket est 0x1009.
Syntaxe
int getsockopt(
(SOCKET) s, // descriptor identifying a socket
(int) SOL_SOCKET, // level
(int) SO_BSP_STATE, // optname
(char *) optval, // output buffer,
(int) *optlen, // size of output buffer
);
Paramètres
-
s [in]
-
Descripteur identifiant le socket.
-
level [in]
-
Niveau auquel l’option est définie. Utilisez SOL_SOCKET pour cette opération.
-
optname [in]
-
Option de socket pour laquelle la valeur doit être récupérée. Utilisez SO_BSP_STATE pour cette opération.
-
optval [out]
-
Pointeur vers la mémoire tampon dans laquelle la valeur de l’option demandée doit être retournée. Ce paramètre doit pointer vers la mémoire tampon égale ou supérieure à la taille d’une structure CSADDR_INFO .
-
optlen [in, out]
-
Pointeur vers la taille, en octets, de la mémoire tampon optval . Cette taille doit être égale ou supérieure à la taille d’une structure CSADDR_INFO .
Valeur retournée
Si l’opération se termine correctement, getsockopt retourne zéro.
Si l’opération échoue, une valeur de SOCKET_ERROR est retournée et un code d’erreur spécifique peut être récupéré en appelant WSAGetLastError.
Code d'erreur | Signification |
---|---|
Un appel WSAStartup réussi doit se produire avant d’utiliser cette fonction. |
|
Le sous-système réseau a échoué. |
|
L’un des paramètres optval ou optlen pointe vers la mémoire qui n’est pas dans une partie valide de l’espace d’adressage utilisateur. Cette erreur est également retournée si la valeur pointée par le paramètre optlen est inférieure à la taille d’une structure CSADDR_INFO . |
|
Un appel Windows Sockets 1.1 bloquant est en cours ou le fournisseur de services traite toujours une fonction de rappel. |
|
Le paramètre level est inconnu ou non valide. |
|
L’option est inconnue ou non prise en charge par la famille de protocoles indiquée. |
|
Le descripteur n’est pas un socket. |
Notes
La fonction getsockopt appelée avec l’option de socket SO_BSP_STATE récupère l’adresse locale, le port local, l’adresse distante, le port distant, le type de socket et le protocole utilisés par un socket. L’option de socket SO_BSP_STATE fonctionne avec les sockets IPv6 ou IPv4 (les familles d’adresses AF_INET6 et AF_INET).
Si la fonction getsockopt réussit, les informations sont retournées dans une structure CSADDR_INFO dans la mémoire tampon vers laquelle pointe le paramètre optval . L’entier pointé par optlen doit initialement contenir la taille de cette mémoire tampon ; lors du retour, elle sera définie sur la longueur, en octets, de la valeur retournée dans le paramètre optval .
Les membres iSocketType et iProtocol de la structure CSADDR_INFO retournée sont renseignés pour le descripteur de socket dans le paramètre s .
Si le socket est dans un état connecté ou lié, le membre LocalAddr de la structure CSADDR_INFO retournée est défini sur une structure SOCKADDR représentant l’adresse et le port locaux. Si le socket est dans un état connecté, le membre RemoteAddr de la structure CSADDR_INFO retournée est défini sur une structure SOCKADDR représentant l’adresse distante et le port.
Si le socket n’est pas dans un état connecté ou lié, le membre LocalAddr de la structure CSADDR_INFO retournée est retourné avec un pointeur NULL dans le membre lpSockaddr et le membre iSockaddrLength défini sur zéro. Si le socket n’est pas dans un état lié, le membre RemoteAddr de la structure CSADDR_INFO retournée est retourné avec un pointeur NULL dans le membre lpSockaddr et le membre iSockaddrLength défini sur zéro.
Si la fonction getsockopt échoue, les paramètres optval et optlen restent inchangés et le paramètre optval ne pointe pas vers une structure de CSADDR_INFO retournée.
Notez que le fichier d’en-tête Ws2def.h est automatiquement inclus dans Winsock2.h et ne doit jamais être utilisé directement.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge |
Windows Server 2008 [applications de bureau uniquement] |
En-tête |
|
Voir aussi