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 |
|