Socket.LingerState Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit une valeur qui spécifie si le Socket délai de fermeture d’un socket dans une tentative d’envoi de toutes les données en attente.
public:
property System::Net::Sockets::LingerOption ^ LingerState { System::Net::Sockets::LingerOption ^ get(); void set(System::Net::Sockets::LingerOption ^ value); };
public System.Net.Sockets.LingerOption? LingerState { get; set; }
public System.Net.Sockets.LingerOption LingerState { get; set; }
member this.LingerState : System.Net.Sockets.LingerOption with get, set
Public Property LingerState As LingerOption
Valeur de propriété
Qui LingerOption spécifie comment s’attarder lors de la fermeture d’un socket.
Exceptions
Une erreur s’est produite lors de la tentative d’accès au socket.
Il Socket a été fermé.
Exemples
L’exemple de code suivant illustre l’utilisation de la LingerState propriété.
static void ConfigureTcpSocket(Socket tcpSocket)
{
// Don't allow another socket to bind to this port.
tcpSocket.ExclusiveAddressUse = true;
// The socket will linger for 10 seconds after
// Socket.Close is called.
tcpSocket.LingerState = new LingerOption (true, 10);
// Disable the Nagle Algorithm for this tcp socket.
tcpSocket.NoDelay = true;
// Set the receive buffer size to 8k
tcpSocket.ReceiveBufferSize = 8192;
// Set the timeout for synchronous receive methods to
// 1 second (1000 milliseconds.)
tcpSocket.ReceiveTimeout = 1000;
// Set the send buffer size to 8k.
tcpSocket.SendBufferSize = 8192;
// Set the timeout for synchronous send methods
// to 1 second (1000 milliseconds.)
tcpSocket.SendTimeout = 1000;
// Set the Time To Live (TTL) to 42 router hops.
tcpSocket.Ttl = 42;
Console.WriteLine("Tcp Socket configured:");
Console.WriteLine($" ExclusiveAddressUse {tcpSocket.ExclusiveAddressUse}");
Console.WriteLine($" LingerState {tcpSocket.LingerState.Enabled}, {tcpSocket.LingerState.LingerTime}");
Console.WriteLine($" NoDelay {tcpSocket.NoDelay}");
Console.WriteLine($" ReceiveBufferSize {tcpSocket.ReceiveBufferSize}");
Console.WriteLine($" ReceiveTimeout {tcpSocket.ReceiveTimeout}");
Console.WriteLine($" SendBufferSize {tcpSocket.SendBufferSize}");
Console.WriteLine($" SendTimeout {tcpSocket.SendTimeout}");
Console.WriteLine($" Ttl {tcpSocket.Ttl}");
Console.WriteLine($" IsBound {tcpSocket.IsBound}");
Console.WriteLine("");
}
Remarques
La LingerState propriété modifie la façon dont Close la méthode se comporte. Cette propriété lorsqu’elle est définie modifie les conditions dans lesquelles la connexion peut être réinitialisée par Winsock. Les réinitialisations de connexion peuvent toujours se produire en fonction du comportement du protocole IP.
Cette propriété contrôle la durée pendant laquelle une connexion orientée connexion reste ouverte après un appel lorsque Close les données restent envoyées.
Lorsque vous appelez des méthodes pour envoyer des données à un homologue, ces données sont placées dans la mémoire tampon réseau sortante. Cette propriété peut être utilisée pour vous assurer que ces données sont envoyées à l’hôte distant avant que la Close méthode supprime la connexion.
Pour activer la persistance, créez une LingerOption instance contenant les valeurs souhaitées et définissez la LingerState propriété sur cette instance.
Le tableau suivant décrit le comportement de la Close méthode pour les valeurs possibles de la Enabled propriété et de la LingerTime propriété stockée dans la LingerState propriété.
| LingerState.Enabled | LingerState.LingerTime | Comportement |
|---|---|---|
false (désactivé), valeur par défaut |
Le délai d’attente n’est pas applicable (valeur par défaut). | Tente d’envoyer des données en attente jusqu’à l’expiration du délai d’expiration du protocole IP par défaut. |
true (activé) |
Un délai d’expiration différent de zéro | Tente d’envoyer des données en attente jusqu’à l’expiration du délai d’expiration spécifié et, si la tentative échoue, Winsock réinitialise la connexion. |
true (activé) |
Délai d’expiration zéro. | Ignore les données en attente. Pour le socket orienté connexion (TCP, par exemple), Winsock réinitialise la connexion. |
La pile IP calcule le délai d’expiration du protocole IP par défaut à utiliser en fonction de l’heure d’aller-retour de la connexion. Dans la plupart des cas, le délai d’attente calculé par la pile est plus pertinent que celui défini par une application. Il s’agit du comportement par défaut d’un socket lorsque la LingerState propriété n’est pas définie.
Lorsque la LingerTime propriété stockée dans la LingerState propriété est définie plus que le délai d’expiration du protocole IP par défaut, le délai d’expiration du protocole IP par défaut s’applique toujours et se substitue.