Partager via


LingerOption.LingerTime Propriété

Définition

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 trueet 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.

S’applique à