LingerOption.LingerTime 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 la durée de maintien de la connexion une fois la méthode Close() appelée s'il reste des données à envoyer.
public:
property int LingerTime { int get(); void set(int value); };
public int LingerTime { get; set; }
member this.LingerTime : int with get, set
Public Property LingerTime As Integer
Valeur de propriété
La durée, en secondes, restant avant la déconnexion après avoir appelé Close().
Exemples
L’exemple suivant affiche la valeur de cette propriété.
Console::Write("This application will timeout if Send does not return within ");
Console::WriteLine(Encoding::ASCII->GetString(s->GetSocketOption(SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 4)));
// Blocks until send returns.
int i = s->Send(msg);
// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);
s->Receive(bytes);
// Displays to the screen.
Console::WriteLine(Encoding::ASCII->GetString(bytes));
s->Shutdown(SocketShutdown::Both);
Console::Write("If data remains to be sent, this application will stay open for ");
Console::WriteLine(safe_cast<LingerOption^>(s->GetSocketOption(SocketOptionLevel::Socket, SocketOptionName::Linger))->LingerTime.ToString());
s->Close();
Console.WriteLine("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));
// blocks until send returns
int i = s.Send(msg);
// blocks until read returns
byte[] bytes = new byte[1024];
s.Receive(bytes);
// Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes));
s.Shutdown(SocketShutdown.Both);
Console.WriteLine("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString());
s.Close();
Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
' blocks until send returns
Dim i As Integer = s.Send(msg)
' blocks until read returns
Dim bytes(1024) As Byte
s.Receive(bytes)
'Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes))
s.Shutdown(SocketShutdown.Both)
Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
s.Close()
End Sub
Remarques
Utilisez cette valeur si vous souhaitez déterminer la durée pendant laquelle un fermé Socket tentera de transférer des données non en attente avant d’expirer. Vous pouvez également définir cette valeur sur la période de délai d’attente souhaitée, en secondes.
Si la Enabled propriété est true
et que vous avez la valeur LingerTime 0, le Socket ignore toutes les données en attente à envoyer dans la mémoire tampon réseau sortante. Si vous modifiez cette valeur, vous devez passer le instance modifié LingerOption à la SetSocketOption méthode ou définir la LingerState propriété ouLingerState.
Le tableau suivant décrit le comportement des valeurs possibles de la Enabled propriété et de la LingerTime propriété stockée dans la LingerState propriété.
enable |
seconds |
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 pour un socket orienté connexion (TCP, par exemple) 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.