BOOL SetSockOpt ( int nOptionName, const void * lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET );
Valeur de retour
Différent de zéro si la fonction est réussie ; sinon, 0 et un code d'erreur spécifique peuvent être récupérée par appeler GetLastError. Les erreurs suivantes s'appliquent à cette fonction membre:
Paramètres
nOptionName
L'option de socket pour lequel la valeur doit être définie.
lpOptionValue
Un pointeur vers la mémoire tampon dans laquelle la valeur de l'option demandée est fournie.
nOptionLen
La taille de la mémoire tampon en octets de lpOptionValue.
nLevel
Le niveau au cours de laquelle l'option est définie ; les niveaux de prise en charge seulement sont SOL_SOCKET et IPPROTO_TCP.
Remarques
Appelez cette fonction membre pour définir une option de socket. SetSockOpt définit la valeur courante d'une option de socket associée à un socket de tout type, dans tout état. Bien que les options peuvent exister à de multiples niveaux de protocole, cette spécification définit seulement les options qui existent à l'échelon sommital « socket ». Options affectent les opérations de socket, comme si les données accélérées sont reçues dans le flux de données normal, si la diffusion de messages peuvent être envoyés sur le socket et ainsi de suite.
Il existe deux types d'options de socket : Boolean options Activer ou désactiveront une fonctionnalité ou un comportement et les options qui nécessitent une valeur d'entier ou de la structure. Pour activer une option booléenne, lpOptionValue signale un entier différent de zéro. Pour désactiver les points de lpOptionValue option un entier égal à zéro. nOptionLen doit être égal à sizeof(BOOL) pour les options booléennes. Pour les autres options, lpOptionValue points à l'entier ou de la structure qui contient la valeur souhaitée pour l'option et nOptionLen est la longueur de l'entier ou de la structure.
SO_LINGER contrôle les mesures prises lorsque des données non envoyées en file d'attente sur un socket et la fonction Close est appelée pour fermer le socket. Pour plus d'informations, voir Considérations de programmation des Sockets Windows dans la documentation du SDK Win32.
Par défaut, un socket ne peut pas être lié (voir lier) à une adresse locale qui est déjà utilisé. À l'occasion, toutefois, il peut être souhaitable de « réutiliser » une adresse de cette façon. Puisque chaque lien est identifié de manière unique par la combinaison des adresses locales et distantes, n'a aucun problème à avoir deux sockets liés à la même adresse locale, tant les adresses distantes sont différents.
D'informer l'implémentation Windows Sockets qu'un appel de lier un socket pas devrait être refusé parce que l'adresse souhaitée est déjà utilisé par un autre socket, l'application doit définir l'option de socket SO_REUSEADDR pour l'attache avant d'émettre l'appel de lier . Notez que l'option est interprétée uniquement au moment de l'appel de lier : il est donc inutile (mais inoffensif) pour définir l'option sur un socket qui n'est ne pas lié à une adresse existante, et définissant ou en réinitialisant l'option après la lier appel n'a aucun effet sur cette ou toute autre socket.
Une application peut demander que la mise en œuvre de Windows Sockets permettent l'utilisation de paquets « keep-alive » sur les connexions de Transmission Control Protocol (TCP) en activant l'option SO_KEEPALIVE de la socket. (Pour plus d'informations sur les paquets « keep-alive », voir Considérations de programmation des Sockets Windows dans la documentation du SDK Win32.) Une implémentation Windows Sockets besoin de prend pas en charge l'utilisation de persistantes : si elle le fait, la sémantique précise sont spécifiques à la mise en œuvre, mais doit être conforme à l'article 4.2.3.6 de la RFC 1122: « exigences pour les hôtes Internet — couches Communication. » Si une connexion est abandonnée à la suite de « persistantes » le code d'erreur WSAENETRESET revient à tous les appels en cours sur le socket, et tous les appels échouera avec WSAENOTCONN.
L'option TCP_NODELAY désactive l'algorithme Nagle. L'algorithme Nagle est utilisé pour réduire le nombre de petits paquets, envoyé par un hôte par la mise en mémoire tampon de données envoyer non reconnue jusqu'à ce qu'un paquet de taille normale peut être envoyé. Cependant, pour certaines applications de cet algorithme peut nuire au rendement et TCP_NODELAY peut être utilisé pour couper le moteur. Auteurs de demande ne devraient pas définir TCP_NODELAY à moins que l'impact de faire ainsi est bien comprises et désiré, puisque l'établissement TCP_NODELAY peut avoir un impact négatif significatif sur les performances du réseau. TCP_NODELAY est la seule prise en charge option de socket qui utilise le niveau IPPROTO_TCP; toutes les autres options utilisent niveau SOL_SOCKET.
Certaines implémentations de l'approvisionnement de Windows Sockets de sortie des informations de débogage si l'option SO_DEBUG est définie par une application.
Les options suivantes sont prises en charge pour SetSockOpt. Le Type identifie le type de données traitées par lpOptionValue.
| Valeur | Type | Sens |
| SO_BROADCAST | BOOL | Permettre la transmission des messages de diffusion sur le socket. |
| SO_DEBUG | BOOL | Enregistrement d'informations de débogage. |
| SO_DONTLINGER | BOOL | Ne pas bloquer les proches attendent des données en attente d'être envoyé. Définition de cette option équivaut à SO_LINGER avec l_onoff défini à zéro. |
| SO_DONTROUTE | BOOL | Ne route : envoyer directement à l'interface. |
| SO_KEEPALIVE | BOOL | Envoyer des messages Keepalive. |
| SO_LINGER | struct LINGER | S'attarder sur l'étroite si les données non envoyées sont présentes. |
| SO_OOBINLINE | BOOL | Recevoir des données hors-bande dans le flux de données normal. |
| SO_RCVBUF | int | Spécifier la taille de la mémoire tampon pour reçoit. |
| SO_REUSEADDR | BOOL | Permettre à l'attache d'être lié à une adresse qui est déjà utilisé. (Voir lier). |
| SO_SNDBUF | int | Spécifier la taille de la mémoire tampon pour envoie. |
| TCP_NODELAY | BOOL | Désactive l'algorithme Nagle pour envoyer coalescence. |
Options de Berkeley Software Distribution (BSD) non pris en charge pour SetSockOpt sont:
| Valeur | Type | Sens |
| SO_ACCEPTCONN | BOOL | Socket est à l'écoute |
| SO_ERROR | int | Obtenir le statut de l'erreur et claire. |
| SO_RCVLOWAT | int | Recevoir l'eau marque. |
| SO_RCVTIMEO | int | Recevoir le timeout |
| SO_SNDLOWAT | int | Envoyer l'eau marque. |
| SO_SNDTIMEO | int | Envoyer timeout. |
| SO_TYPE | int | Type de la socket. |
| IP_OPTIONS | Champ de définir les options de l'en-tête IP. |
Aperçu de CAsyncSocket |nbsp ; Membres de la classe | Graphique de la hiérarchie
Voir aussi  ;CAsyncSocket::AsyncSelect, CAsyncSocket::Bind, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::IOCtl