SOL_SOCKET Socket Options

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

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 ce que ces tableaux peuvent fournir ; ces options contiennent des liens vers des pages supplémentaires.

Note

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 d’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é 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, et non dans le flux de données réseau normal, envoyées avec des demandes réseau pour établir une connexion. Cette option est utilisée par des protocoles hérités tels que DECNet, OSI TP4 et d’autres. 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, et non dans le flux de données réseau normal, envoyée avec des requêtes réseau pour établir une connexion. Cette option est utilisée par des protocoles hérités tels que DECNet, OSI TP4 et d’autres. 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 qu’un socket a été connecté. Cette option est valide uniquement pour les protocoles orientés connexion.
SO_CONNOPT oui oui char [] Données d’option de connexion supplémentaires, et non dans le flux de données réseau normal, envoyées avec des demandes réseau pour établir une connexion. Cette option est utilisée par des protocoles hérités tels que DECNet, OSI TP4 et d’autres. 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, envoyée avec des requêtes réseau pour établir une connexion. Cette option est utilisée par des protocoles hérités tels que DECNet, OSI TP4 et d’autres. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_DISCDATA oui oui char [] Des données supplémentaires, et non dans le flux de données réseau normal, envoyées avec des requêtes réseau pour déconnecter une connexion. Cette option est utilisée par des protocoles hérités tels que DECNet, OSI TP4 et d’autres. 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, et non dans le flux de données réseau normal, envoyée avec des requêtes réseau pour déconnecter une connexion. Cette option est utilisée par des protocoles hérités tels que DECNet, OSI TP4 et d’autres. 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, et non dans le flux de données réseau normal, envoyées avec des demandes réseau pour déconnecter une connexion. Cette option est utilisée par des protocoles hérités tels que DECNet, OSI TP4 et d’autres. 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 des requêtes réseau pour déconnecter une connexion. Cette option est utilisée par des protocoles hérités tels que DECNet, OSI TP4 et d’autres. Cette option n’est pas prise en charge par le protocole TCP/IP dans Windows.
SO_DEBUG oui oui DWORD (booléen) Activez la sortie de débogage. Actuellement, les fournisseurs Microsoft ne génèrent 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 différent de zéro, un socket reste ouvert pendant une durée spécifiée après un appel de fonction closesocket pour permettre l’envoi de données mises 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 l’interface à laquelle le socket est lié et non pas routé sur une autre interface. Cette option est valide uniquement pour les protocoles orientés messages. Microsoft fournisseurs 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 toute autre liaison de socket vers la même adresse et le 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 la conservation active 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 membre l_onoff de la structure persistante n’est pas différent de zéro, un socket reste ouvert pendant une durée 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, de rester ouverte 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 messages 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. Microsoft fournisseurs 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 des données régulières. Cette option est valide uniquement 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 créés ne se chevauchent pas. 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 bit WSA_FLAG_OVERLAPPED dans le paramètre dwFlags désactivé.
SO_PAUSE_ACCEPT oui oui DWORD(booléen) Utilisez cette option pour écouter les sockets. Lorsque l’option est définie, le socket répond à toutes les connexions entrantes avec un RST au lieu de les accepter.
SO_PORT_SCALABILITY oui oui DWORD (booléen) Active l’extensibilité des ports locaux pour un socket en autorisant l’allocation de ports à optimiser 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 au lieu de 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(booléen) Cette option doit être définie sur un socket indépendant. Lorsque SO_RANDOMIZE_PORT est définie 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 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.
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 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) Quand elle est définie, autorisez la réutilisation des ports éphémères pour les fonctions de connexion d’API Winsock qui nécessitent une liaison explicite, telle que ConnectEx. Notez que les fonctions de connexion avec une liaison implicite (par exemple , se connecter sans liaison explicite) ont cette option définie par défaut. Utilisez cette option au lieu de SO_PORT_SCALABILITY sur les plateformes où les deux sont disponibles.
SO_REUSE_MULTICASTPORT oui DWORD Lorsqu’il est défini sur un socket, cette option indique que le socket ne sera jamais utilisé pour recevoir des paquets de monodiffusion et, par conséquent, que son port peut être partagé avec d’autres applications multidiffusion uniquement. La définition de la valeur sur 1 active toujours le partage du trafic de multidiffusion sur le port. La définition de la valeur sur 0 (par défaut) désactive ce comportement.
SO_SNDBUF oui oui DWORD 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.
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 bloquer les 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, getockname, getockopt 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, getockname, getsockopt, setsockopt ou shutdown doivent être utilisées sur le socket connecté.
SO_USELOOPBACK oui oui DWORD (booléen) Utilisez l’adresse de bouclage locale 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 oui oui oui oui oui oui oui oui oui
SO_BROADCAST oui oui oui oui oui oui oui oui oui
SO_BSP_STATE oui oui oui oui
SO_CONDITIONAL_ACCEPT oui oui oui oui oui oui oui
SO_CONNDATA oui oui oui oui oui oui oui oui
SO_CONNDATALEN oui oui oui oui oui oui oui oui
SO_CONNECT_TIME oui oui oui oui oui oui oui oui oui
SO_CONNOPT oui oui oui oui oui oui oui oui
SO_CONNOPTLEN oui oui oui oui oui oui oui oui
SO_DISCDATA oui oui oui oui oui oui oui oui
SO_DISCDATALEN oui oui oui oui oui oui oui oui
SO_DISCOPT oui oui oui oui oui oui oui oui
SO_DISCOPTLEN oui oui oui oui oui oui oui oui
SO_DEBUG oui oui oui oui oui oui oui oui oui
SO_DONTLINGER oui oui oui oui oui oui oui oui oui
SO_DONTROUTE oui oui oui oui oui oui oui oui oui
SO_ERROR oui oui oui oui oui oui oui oui oui
SO_EXCLUSIVEADDRUSE oui oui oui oui oui oui oui Oui SP4+
SO_GROUP_ID oui oui oui oui
SO_GROUP_PRIORITY oui oui oui oui
SO_KEEPALIVE oui oui oui oui oui oui oui oui oui
SO_LINGER oui oui oui oui oui oui oui oui oui
SO_MAX_MSG_SIZE oui oui oui oui oui oui oui oui oui
SO_MAXDG oui oui oui oui oui oui oui
SO_MAXPATHDG oui oui oui oui oui oui oui
SO_OOBINLINE oui oui oui oui oui oui oui oui oui
SO_OPENTYPE oui oui oui oui oui oui oui oui oui
SO_PORT_SCALABILITY oui oui oui
SO_PROTECT oui
SO_PROTOCOL_INFO oui oui oui oui oui oui oui oui oui
SO_PROTOCOL_INFOA oui oui oui oui oui oui oui oui oui
SO_PROTOCOL_INFOW oui oui oui oui oui oui oui oui oui
SO_RCVBUF oui oui oui oui oui oui oui oui oui
SO_RCVLOWAT
SO_RCVTIMEO oui oui oui oui oui oui oui oui oui
SO_RANDOMIZE_PORT oui oui oui oui
SO_REUSEADDR oui oui oui oui oui oui oui oui oui
SO_REUSE_UNICASTPORT oui
SO_REUSE_MULTICASTPORT oui
SO_SNDBUF oui oui oui oui oui oui oui oui oui
SO_SNDLOWAT
SO_SNDTIMEO oui oui oui oui oui oui oui oui oui
SO_TYPE oui oui oui oui oui oui oui oui oui
SO_UPDATE_ACCEPT_CONTEXT oui oui oui oui oui oui oui oui
SO_UPDATE_CONNECT_CONTEXT oui oui oui oui oui oui
SO_USELOOPBACK

Remarks

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

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

Dans le kit de développement logiciel (SDK) Microsoft Windows publié pour Windows Vista et versions ultérieures, l’organisation 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 des options de socket SOL_SOCKET sont définies dans les fichiers d’en-tête Winsock2.h et Mswsock.h . Les options de socket 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 . Le fichier 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 .

Requirements

Requirement Valeur
Header
Winsock2.h ;
Mswsock.h ;
Ws2def.h (include Winsock2.h)