SOL_SOCKET Socket Options

Les tableaux suivants décrivent SOL_SOCKET options de socket. Pour plus d’informations sur l’obtention et la définition des options de socket, consultez les pages de référence des fonctions getsockopt et setsockopt .

Pour énumérer les protocoles et découvrir les propriétés prises en charge pour chaque protocole installé, utilisez la fonction WSAEnumProtocols, WSCEnumProtocols ou WSCEnumProtocols32 .

Certaines options de socket nécessitent plus d’explications que celles que ces tables peuvent transmettre ; ces options contiennent des liens vers des pages supplémentaires.

Notes

Toutes les options de socket SOL_SOCKET s’appliquent également à IPv4 et IPv6 (sauf SO_BROADCAST, car la diffusion n’est pas implémentée dans IPv6).

 

SOL_SOCKET Socket Options

Option Obtenir Définissez Type Optval Description
PVD_CONFIG Oui Oui char [] Objet de structure de données opaque contenant des informations de configuration pour le fournisseur de services. Cette option dépend de l’implémentation.
SO_ACCEPTCONN Oui DWORD (booléen) Retourne si un socket est en mode d’écoute. Cette option est valide uniquement pour les protocoles orientés connexion.
SO_BROADCAST Oui Oui DWORD (booléen) Configurez un socket pour l’envoi de données de diffusion. Cette option est valide uniquement pour les protocoles qui prennent en charge la diffusion (IPX et UDP, par exemple).
SO_BSP_STATE Oui CSADDR_INFO 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 plus d’informations, consultez la référence SO_BSP_STATE.
SO_CONDITIONAL_ACCEPT Oui Oui DWORD (booléen) Indique si les connexions entrantes doivent être acceptées ou rejetées par l’application, et non par la pile de protocoles. Pour plus d’informations, consultez la référence SO_CONDITIONAL_ACCEPT .
SO_CONNDATA Oui Oui char [] Des données supplémentaires, qui ne se situent pas dans le flux de données réseau normal, sont envoyées avec des demandes réseau pour établir une connexion. Cette option est utilisée par les protocoles hérités tels que DECNet, OSI TP4, etc. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_CONNDATALEN Oui DWORD Longueur, en octets, de données supplémentaires, qui ne se trouve pas dans le flux de données réseau normal, qui est envoyée avec les demandes réseau pour établir une connexion. Cette option est utilisée par les protocoles hérités tels que DECNet, OSI TP4, etc. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_CONNECT_TIME Oui DWORD Retourne le nombre de secondes pendant lesquelles un socket a été connecté. Cette option n’est valide que pour les protocoles orientés connexion.
SO_CONNOPT Oui Oui char [] Données d’option de connexion supplémentaires, qui ne sont pas dans le flux de données réseau normal, qui sont envoyées avec des demandes réseau pour établir une connexion. Cette option est utilisée par les protocoles hérités tels que DECNet, OSI TP4, etc. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_CONNOPTLEN Oui DWORD Longueur, en octets, des données d’option de connexion, et non dans le flux de données réseau normal, qui est envoyée avec les demandes réseau pour établir une connexion. Cette option est utilisée par les protocoles hérités tels que DECNet, OSI TP4, etc. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_DISCDATA Oui Oui char [] Données supplémentaires, qui ne se situent pas dans le flux de données réseau normal, qui sont envoyées avec des demandes réseau pour déconnecter une connexion. Cette option est utilisée par les protocoles hérités tels que DECNet, OSI TP4, etc. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_DISCDATALEN Oui DWORD Longueur, en octets, de données supplémentaires, qui ne se trouve pas dans le flux de données réseau normal, qui est envoyée avec les demandes réseau de déconnexion d’une connexion. Cette option est utilisée par les protocoles hérités tels que DECNet, OSI TP4, etc. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_DISCOPT Oui Oui char [] Données d’option de déconnexion supplémentaires, qui ne sont pas dans le flux de données réseau normal, qui sont envoyées avec les demandes réseau pour déconnecter une connexion. Cette option est utilisée par les protocoles hérités tels que DECNet, OSI TP4, etc. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_DISCOPTLEN Oui DWORD Longueur, en octets, des données d’option de déconnexion supplémentaires, et non dans le flux de données réseau normal, qui est envoyée avec les demandes réseau de déconnexion d’une connexion. Cette option est utilisée par les protocoles hérités tels que DECNet, OSI TP4, etc. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_DEBUG Oui Oui DWORD (booléen) Activer la sortie de débogage. Les fournisseurs Microsoft ne génèrent actuellement aucune information de débogage.
SO_DONTLINGER Oui Oui DWORD (booléen) Indique l’état du membre l_onoff de la structure persistante associée à un socket. Si ce membre n’est pas nul, un socket reste ouvert pendant une période spécifiée après un appel de fonction closesocket pour permettre l’envoi de données en file d’attente. Cette option n’est valide que pour les protocoles fiables et orientés connexion.
SO_DONTROUTE Oui Oui DWORD (booléen) Indique que les données sortantes doivent être envoyées sur une interface à laquelle le socket est lié et non sur une autre interface. Cette option est valide uniquement pour les protocoles orientés message. Les fournisseurs Microsoft ignorent silencieusement cette option et consultent toujours la table de routage pour trouver l’interface sortante appropriée.
SO_ERROR Oui DWORD Retourne le dernier code d’erreur sur ce socket. Ce code d’erreur par socket n’est pas toujours défini immédiatement.
SO_EXCLUSIVEADDRUSE Oui Oui DWORD (booléen) Empêche tout autre socket de se lier à la même adresse et au même port. Cette option doit être définie avant d’appeler la fonction de liaison . Pour plus d’informations, consultez la référence SO_EXCLUSIVEADDRUSE .
SO_GROUP_ID Oui nombre entier non signé Cette option de socket est réservée et ne doit pas être utilisée.
SO_GROUP_PRIORITY Oui Oui int Cette option de socket est réservée et ne doit pas être utilisée.
SO_KEEPALIVE Oui Oui DWORD (booléen) Active le maintien en vie pour une connexion de socket. Valide uniquement pour les protocoles qui prennent en charge la notion de keep-alive (protocoles orientés connexion). Pour TCP, le délai d’expiration de conservation par défaut est de 2 heures et l’intervalle de conservation est de 1 seconde. Le nombre par défaut de sondes keep-alive varie en fonction de la version de Windows. Pour plus d’informations, consultez la référence SO_KEEPALIVE .
SO_LINGER Oui Oui struct linger Indique l’état de la structure persistante associée à un socket. Si le l_onoff membre de la structure persistante n’est pas identique, un socket reste ouvert pendant une période spécifiée après un appel de fonction closesocket pour permettre l’envoi des données en file d’attente. La durée, en secondes, pour rester ouvert est spécifiée dans le membre l_linger de la structure persistante . Cette option n’est valide que pour les protocoles fiables et orientés connexion.
SO_MAX_MSG_SIZE Oui DWORD Retourne la taille maximale des messages sortants pour les sockets orientés message pris en charge par le protocole. N’a aucune signification pour les sockets orientés flux.
SO_MAXDG Oui DWORD Retourne la taille maximale, en octets, pour les datagrammes sortants pris en charge par le protocole. Cette option de socket n’a aucune signification pour les sockets orientés flux.
SO_MAXPATHDG Oui DWORD Retourne la taille maximale, en octets, pour les datagrammes sortants pris en charge par le protocole à une adresse de destination donnée. Cette option de socket n’a aucune signification pour les sockets orientés flux. Les fournisseurs Microsoft peuvent traiter cela en mode silencieux comme SO_MAXDG.
SO_OOBINLINE Oui Oui DWORD (booléen) Indique que les données hors limites doivent être retournées en ligne avec les données régulières. Cette option n’est valide que pour les protocoles orientés connexion qui prennent en charge les données hors bande.
SO_OPENTYPE Oui Oui DWORD Une fois défini, affecte si les sockets suivants qui sont créés ne seront pas chevauchés. Les valeurs possibles pour cette option sont SO_SYNCHRONOUS_ALERT et SO_SYNCHRONOUS_NONALERT. Cette option ne doit pas être utilisée. Utilisez plutôt la fonction WSASocket et laissez le WSA_FLAG_OVERLAPPED bit dans le paramètre dwFlags désactivé.
SO_PAUSE_ACCEPT Oui Oui DWORD(boolean) Utilisez cette option pour les sockets d’écoute. Lorsque l’option est définie, le socket répond à toutes les connexions entrantes avec un RST plutôt que de les accepter.
SO_PORT_SCALABILITY Oui Oui DWORD (booléen) Permet la scalabilité des ports locaux pour un socket en permettant d’optimiser l’allocation de ports en allouant plusieurs fois des ports génériques pour différentes paires de ports d’adresse locale sur un ordinateur local. Sur les plateformes où les deux options sont disponibles, préférez SO_REUSE_UNICASTPORT plutôt que cette option. Pour plus d’informations, consultez la référence SO_PORT_SCALABILITY.
SO_PROTOCOL_INFO Oui WSAPROTOCOL_INFO Cette option est définie sur l’option de socket SO_PROTOCOL_INFOW si la macro UNICODE est définie. Si la macro UNICODE n’est pas définie, cette option est définie sur l’option de socket SO_PROTOCOL_INFOA.
SO_PROTOCOL_INFOA Oui WSAPROTOCOL_INFOA Retourne la structure WSAPROTOCOL_INFOA pour le socket donné.
SO_PROTOCOL_INFOW Oui WSAPROTOCOL_INFOW Retourne la structure WSAPROTOCOL_INFOW pour le socket donné
SO_RANDOMIZE_PORT Oui Oui DWORD(boolean) Cette option doit être définie sur un socket indépendant. Quand SO_RANDOMIZE_PORT est défini et qu’un port éphémère est sélectionné sur le socket, un numéro de port aléatoire est lié. Les ports de réutilisation automatique (ports sélectionnés à l’aide de SO_REUSE_UNICASTPORT) aléatoirent également le port retourné. Par conséquent, si une application définit SO_REUSE_UNICASTPORT puis tente de définir SO_RANDOMIZE_PORT, le deuxième appel setsockopt échoue.
SO_RCVBUF Oui Oui DWORD Espace total de mémoire tampon 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.
SO_RCVLOWAT Oui Oui DWORD Option de socket de BSD UNIX incluse pour la compatibilité descendante. Cette option définit le nombre minimal d’octets à traiter pour les opérations d’entrée de socket. Cette option n’est pas prise en charge par le fournisseur TCP/IP Windows. Si cette option est utilisée sur Windows Vista et versions ultérieures, les fonctions getsockopt et setsockopt échouent avec WSAEINVAL. Sur les versions antérieures de Windows, ces fonctions échouent avec WSAENOPROTOOPT.
SO_RCVTIMEO Oui Oui DWORD Délai d’expiration, en millisecondes, pour le blocage des appels de réception. La valeur par défaut de cette option est zéro, ce qui indique qu’une opération de réception n’expire pas. Si un appel de réception bloquant expire, la connexion est dans un état indéterminé et doit être fermée.
Si le socket est créé à l’aide de la fonction WSASocket , le paramètre dwFlags doit avoir l’attribut WSA_FLAG_OVERLAPPED défini pour que le délai d’expiration fonctionne correctement. Sinon, le délai d’expiration ne prend jamais effet.
SO_REUSEADDR Oui Oui DWORD (booléen) Permet à un socket de se lier à une adresse et à un port déjà utilisés. L’option SO_EXCLUSIVEADDRUSE peut empêcher cela.
SO_REUSE_UNICASTPORT Oui Oui DWORD (booléen) Lorsque cette option est définie, autorisez la réutilisation de port éphémère pour les fonctions de connexion de l’API Winsock qui nécessitent une liaison explicite, telle que ConnectEx. Notez que cette option est définie par défaut pour les fonctions de connexion avec une liaison implicite (comme se connecter sans liaison explicite). Utilisez cette option au lieu de SO_PORT_SCALABILITY sur les plateformes où les deux sont disponibles.
SO_REUSE_MULTICASTPORT Oui DWORD Lorsqu’elle est définie sur un socket, cette option indique que le socket ne sera jamais utilisé pour recevoir des paquets en monodiffusion, et par conséquent que son port peut être partagé avec d’autres applications de multidiffusion uniquement. La définition de la valeur sur 1 permet de toujours partager le trafic de multidiffusion sur le port. La définition de la valeur sur 0 (valeur par défaut) désactive ce comportement.
SO_SNDBUF Oui Oui DWORD Espace total de mémoire tampon 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.
SO_SNDLOWAT Oui Oui DWORD Option de socket de BSD UNIX incluse pour la compatibilité descendante. Cette option définit le nombre minimal d’octets à traiter pour les opérations de sortie de socket. Cette option n’est pas prise en charge par le fournisseur TCP/IP Windows. Si cette option est utilisée sur Windows Vista et versions ultérieures, les fonctions getsockopt et setsockopt échouent avec WSAEINVAL. Sur les versions antérieures de Windows, ces fonctions échouent avec WSAENOPROTOOPT.
SO_SNDTIMEO Oui Oui DWORD Délai d’expiration, en millisecondes, pour le blocage des appels d’envoi. La valeur par défaut de cette option est zéro, ce qui indique qu’une opération d’envoi n’expire pas. Si un appel d’envoi bloquant expire, la connexion est dans un état indéterminé et doit être fermée.
Si le socket est créé à l’aide de la fonction WSASocket , le paramètre dwFlags doit avoir l’attribut WSA_FLAG_OVERLAPPED défini pour que le délai d’expiration fonctionne correctement. Sinon, le délai d’expiration ne prend jamais effet.
SO_TYPE Oui DWORD Retourne le type de socket pour le socket donné (SOCK_STREAM ou SOCK_DGRAM, par exemple).
SO_UPDATE_ACCEPT_CONTEXT Oui DWORD (booléen) Cette option est utilisée avec la fonction AcceptEx . Cette option met à jour les propriétés du socket qui sont héritées du socket d’écoute. Cette option doit être définie si les fonctions getpeername, getsockname, getsockopt ou setsockopt doivent être utilisées sur le socket accepté.
SO_UPDATE_CONNECT_CONTEXT Oui DWORD (booléen) Cette option est utilisée avec les fonctions ConnectEx, WSAConnectByList et WSAConnectByName . Cette option met à jour les propriétés du socket une fois la connexion établie. Cette option doit être définie si les fonctions getpeername, getsockname, getsockopt, setsockopt ou shutdown doivent être utilisées sur le socket connecté.
SO_USELOOPBACK Oui Oui DWORD (booléen) Utilisez l’adresse de bouclage local lors de l’envoi de données à partir de ce socket. Cette option ne doit être utilisée que lorsque toutes les données envoyées seront également reçues localement. Cette option n’est pas prise en charge par le fournisseur TCP/IP Windows. Si cette option est utilisée sur Windows Vista et versions ultérieures, les fonctions getsockopt et setsockopt échouent avec WSAEINVAL. Sur les versions antérieures de Windows, ces fonctions échouent avec WSAENOPROTOOPT.

Prise en charge de Windows pour les options de SOL_SOCKET

Option Windows 10 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/ME
PVD_CONFIG
SO_ACCEPTCONN x x x x x x x x x
SO_BROADCAST x x x x x x x x x
SO_BSP_STATE x x x x
SO_CONDITIONAL_ACCEPT x x x x x x x
SO_CONNDATA x x x x x x x x
SO_CONNDATALEN x x x x x x x x
SO_CONNECT_TIME x x x x x x x x x
SO_CONNOPT x x x x x x x x
SO_CONNOPTLEN x x x x x x x x
SO_DISCDATA x x x x x x x x
SO_DISCDATALEN x x x x x x x x
SO_DISCOPT x x x x x x x x
SO_DISCOPTLEN x x x x x x x x
SO_DEBUG x x x x x x x x x
SO_DONTLINGER x x x x x x x x x
SO_DONTROUTE x x x x x x x x x
SO_ERROR x x x x x x x x x
SO_EXCLUSIVEADDRUSE x x x x x x x x SP4+
SO_GROUP_ID x x x x
SO_GROUP_PRIORITY x x x x
SO_KEEPALIVE x x x x x x x x x
SO_LINGER x x x x x x x x x
SO_MAX_MSG_SIZE x x x x x x x x x
SO_MAXDG x x x x x x x
SO_MAXPATHDG x x x x x x x
SO_OOBINLINE x x x x x x x x x
SO_OPENTYPE x x x x x x x x x
SO_PORT_SCALABILITY x x x
SO_PROTECT x
SO_PROTOCOL_INFO x x x x x x x x x
SO_PROTOCOL_INFOA x x x x x x x x x
SO_PROTOCOL_INFOW x x x x x x x x x
SO_RCVBUF x x x x x x x x x
SO_RCVLOWAT
SO_RCVTIMEO x x x x x x x x x
SO_RANDOMIZE_PORT x x x x
SO_REUSEADDR x x x x x x x x x
SO_REUSE_UNICASTPORT x
SO_REUSE_MULTICASTPORT x
SO_SNDBUF x x x x x x x x x
SO_SNDLOWAT
SO_SNDTIMEO x x x x x x x x x
SO_TYPE x x x x x x x x x
SO_UPDATE_ACCEPT_CONTEXT x x x x x x x x
SO_UPDATE_CONNECT_CONTEXT x x x x x x
SO_USELOOPBACK

Notes

Les options de socket SOL_SOCKET sont définies dans plusieurs fichiers d’en-tête Winsock :

  • Winsock2.h
  • Mswsock.h
  • Ws2def.h

Sur le Kit de développement logiciel (SDK) Microsoft Windows publié pour Windows Vista et versions ultérieures, la organization des fichiers d’en-tête a changé et SOL_SOCKET niveau est défini dans le fichier d’en-tête Ws2def.h qui est automatiquement inclus dans le fichier d’en-tête Winsock2.h. Certaines options de socket SOL_SOCKET sont définies dans les fichiers d’en-tête Winsock2.h et Mswsock.h . Les options de socket de SOL_SOCKET restantes sont définies dans le fichier d’en-tête Ws2def.h qui est automatiquement inclus par le fichier d’en-tête Winsock2.h . Ws2def.h ne doit jamais être utilisé directement.

Dans le Kit de développement logiciel (SDK) de plateforme publié pour Windows Server 2003 et Windows XP, le niveau SOL_SOCKET est défini dans le fichier d’en-tête Winsock2.h . Les options de socket SOL_SOCKET sont définies dans les fichiers d’en-tête Winsock2.h et Mswsock.h .

Spécifications

Condition requise Valeur
En-tête
Winsock2.h;
Mswsock.h;
Ws2def.h (inclure Winsock2.h)