LingerOption.LingerTime Eigenschaft

Definition

Ruft die Zeitspanne ab, für die die Verbindung nach Aufruf der Close()-Methode aufrechterhalten werden soll, wenn noch Daten zu senden sind, oder legt diese fest.

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

Eigenschaftswert

Die Zeitspanne in Sekunden, für die die Verbindung nach dem Aufruf von Close() beibehalten werden soll.

Beispiele

Im folgenden Beispiel wird der Wert dieser Eigenschaft angezeigt.

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

Hinweise

Verwenden Sie diesen Wert, wenn Sie bestimmen möchten, wie lange ein geschlossener Socket Computer versucht, nicht gesendete Daten zu übertragen, bevor ein Timeout auftritt. Sie können diesen Wert auch auf den gewünschten Timeoutzeitraum in Sekunden festlegen.

Wenn die Enabled -Eigenschaft ist trueund Sie auf 0 festlegen LingerTime , verwirft alle Socket ausstehenden Daten, die im ausgehenden Netzwerkpuffer gesendet werden sollen. Wenn Sie diesen Wert ändern, müssen Sie die geänderte LingerOption instance an die SetSocketOption -Methode übergeben oder die - oder LingerState -LingerStateEigenschaft festlegen.

In der folgenden Tabelle wird das Verhalten für die möglichen Werte der Enabled Eigenschaft und der in der LingerTimeLingerState -Eigenschaft gespeicherten Eigenschaft beschrieben.

enable seconds Verhalten
false (deaktiviert), der Standardwert Das Timeout ist nicht anwendbar (Standard). Versucht, ausstehende Daten für einen verbindungsorientierten Socket (z. B. TCP) zu senden, bis das Standardmäßige IP-Protokolltimeout abläuft.
true (aktiviert) Timeout ungleich Null Versucht, ausstehende Daten zu senden, bis das angegebene Timeout abläuft. Wenn der Versuch fehlschlägt, setzt Winsock die Verbindung zurück.
true (aktiviert) Ein Nulltimeout. Verwirft alle ausstehenden Daten. Für verbindungsorientierte Sockets (z. B. TCP) setzt Winsock die Verbindung zurück.

Der IP-Stapel berechnet den Standardtimeoutzeitraum für das IP-Protokoll basierend auf der Roundtripzeit der Verbindung. In den meisten Fällen ist das vom Stapel berechnete Timeout relevanter als ein von einer Anwendung definiertes. Dies ist das Standardverhalten für einen Socket, wenn die LingerState Eigenschaft nicht festgelegt ist.

Wenn die LingerTime in der LingerState Eigenschaft gespeicherte Eigenschaft größer als das Standardtimeout des IP-Protokolls festgelegt ist, wird das Standardzeitlimit des IP-Protokolls weiterhin angewendet und überschrieben.

Gilt für: