Partager via


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
WSANOTINITIALISED
Un appel WSAStartup réussi doit se produire avant d’utiliser cette fonction.
WSAENETDOWN
Le sous-système réseau a échoué.
WSAEFAULT
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 .
WSAEINPROGRESS
Un appel Windows Sockets 1.1 bloquant est en cours ou le fournisseur de services traite toujours une fonction de rappel.
WSAEINVAL
Le paramètre level est inconnu ou non valide.
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.

 

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
Ws2def.h (inclure Winsock2.h)

Voir aussi

getsockopt

CSADDR_INFO

SOCKADDR