Structure LINGER (winsock.h)

La structure linger conserve des informations sur un socket spécifique qui spécifie comment ce socket doit se comporter lorsque les données sont mises en file d’attente pour être envoyées et que la fonction closesocket est appelée sur le socket.

Syntaxe

typedef struct linger {
  u_short l_onoff;
  u_short l_linger;
} LINGER, *PLINGER, *LPLINGER;

Membres

l_onoff

Type : u_short

Spécifie si un socket doit rester 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. Ce membre peut avoir l’une des valeurs suivantes.

Valeur Signification
0
Le socket ne restera pas ouvert. Il s’agit de la valeur définie si la fonction setsockopt est appelée avec le paramètre optname défini sur SO_DONTLINGER et si le paramètre optval est égal à zéro.

Cette valeur est également définie si la fonction setsockopt est appelée avec le paramètre optname défini sur SO_LINGER et si la structure persistante passée dans le paramètre optval a la l_onoff membre définie sur 0.

non nul
Le socket reste ouvert pendant une période spécifiée. Cette valeur est définie si la fonction setsockopt est appelée avec le paramètre optname défini sur SO_DONTLINGER et si le paramètre optval est différent de zéro.

Cette valeur est également définie si la fonction setsockopt est appelée avec le paramètre optname défini sur SO_LINGER et si la structure persistante passée dans le paramètre optval a le l_onoff membre défini sur une valeur différente de zéro.

l_linger

Type : u_short

Temps persistant en secondes. Ce membre spécifie la durée pendant laquelle rester ouvert après un appel de fonction closesocket pour permettre l’envoi de données en file d’attente. Ce membre s’applique uniquement si le l_onoff membre de la structure persistante est défini sur une valeur différente de zéro.

Cette valeur est définie si la fonction setsockopt est appelée avec le paramètre optname défini sur SO_LINGER. Le paramètre optval passé à la fonction setsockopt doit contenir une structure persistante qui est copiée dans la structure linger interne maintenue pour le socket.

Remarques

Le l_onoff membre de la structure persistante détermine si un socket doit rester 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. Ce membre peut être modifié de deux manières :

  • Appelez la fonction setsockopt avec le paramètre optname défini sur SO_DONTLINGER. Le paramètre optval détermine la façon dont le membre l_onoff est modifié.
  • Appelez la fonction setsockopt avec le paramètre optname défini sur SO_LINGER. Le paramètre optval spécifie la façon dont les membres l_onoff et l_linger sont modifiés.

Le l_linger membre de la structure persistante détermine la durée pendant laquelle , en secondes, un socket doit rester ouvert. Ce membre s’applique uniquement si le l_onoff membre de la structure persistante est différent de zéro.

Pour permettre à un socket de rester ouvert, une application doit définir le membre l_onoff sur une valeur différente de zéro et définir le membre l_linger sur le délai d’expiration souhaité en secondes. Pour empêcher un socket de rester ouvert, une application doit uniquement définir le l_onoff membre de la structure persistante sur zéro.

Si une application appelle la fonction setsockopt avec le paramètre optname défini sur SO_DONTLINGER pour définir le membre l_onoff sur une valeur différente de zéro, la valeur du membre l_linger n’est pas spécifiée. Dans ce cas, le délai d’attente utilisé dépend de l’implémentation. Si un délai d’attente précédent a été établi pour un socket (en activant SO_LINGER), cette valeur de délai d’expiration doit être rétablie par le fournisseur de services.

Notez que l’activation d’un délai d’attente différent de zéro sur un socket non bloquant n’est pas recommandée.

La fonction getsockopt peut être appelée avec le paramètre optname défini sur SO_LINGER pour récupérer la valeur actuelle de la structure linger associée à un socket.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
En-tête winsock.h (inclure Winsock2.h)

Voir aussi

Arrêt gracieux, options Linger et fermeture du socket

closesocket

getsockopt

setockopt