Socket.LingerState Propriété
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 Socket doit différer la fermeture d'un socket lors d'une tentative d'envoi de l'ensemble des 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
LingerOption qui spécifie comment maintenir un socket lors de sa fermeture.
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
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 = gcnew 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 {0}",
tcpSocket->ExclusiveAddressUse);
Console::WriteLine(" LingerState {0}, {1}",
tcpSocket->LingerState->Enabled,
tcpSocket->LingerState->LingerTime);
Console::WriteLine(" NoDelay {0}",
tcpSocket->NoDelay);
Console::WriteLine(" ReceiveBufferSize {0}",
tcpSocket->ReceiveBufferSize);
Console::WriteLine(" ReceiveTimeout {0}",
tcpSocket->ReceiveTimeout);
Console::WriteLine(" SendBufferSize {0}",
tcpSocket->SendBufferSize);
Console::WriteLine(" SendTimeout {0}",
tcpSocket->SendTimeout);
Console::WriteLine(" Ttl {0}",
tcpSocket->Ttl);
Console::WriteLine(" IsBound {0}",
tcpSocket->IsBound);
Console::WriteLine("");
}
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("");
}
La LingerState propriété modifie le comportement Close de la méthode. 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 au moment où les données restent à Close envoyer.
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 garantir que ces données sont envoyées à l’hôte distant avant que la Close méthode ne supprime la connexion.
Pour activer la persistance, créez un 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é), la 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’attente différent de zéro | Tente d’envoyer des données en attente jusqu’à l’expiration du délai d’attente spécifié, et si la tentative échoue, Winsock réinitialise la connexion. |
true (activé) |
Délai d’expiration zéro. | Ignore toutes 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 du temps 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 au-delà du 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 remplace.
Produit | Versions |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :