LingerOption.LingerTime Właściwość

Definicja

Pobiera lub ustawia czas, przez jaki należy pozostać połączony po wywołaniu Close() metody , jeśli dane pozostaną wysyłane.

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

Wartość właściwości

Czas, w sekundach, aby pozostać połączony po wywołaniu metody Close().

Przykłady

Poniższy przykład przedstawia wartość tej właściwości.

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

Uwagi

Użyj tej wartości, jeśli chcesz określić, jak długo zamknięta Socket próba przeniesienia nieuprawnych danych przed upływem limitu czasu. Tę wartość można również ustawić na żądany okres limitu czasu w sekundach.

Enabled Jeśli właściwość ma truewartość , i ustawiono LingerTime wartość 0, odrzuca Socket wszystkie oczekujące dane do wysłania w buforze sieci wychodzącej. Jeśli zmienisz tę wartość, musisz przekazać zmienione LingerOption wystąpienie do metody lub ustawić SetSocketOptionLingerState właściwość lub LingerState .

W poniższej tabeli opisano zachowanie możliwych wartości Enabled właściwości i LingerTime właściwości przechowywanej LingerState we właściwości.

enable seconds Zachowanie
false (wyłączone), wartość domyślna Limit czasu nie ma zastosowania (wartość domyślna). Próbuje wysłać oczekujące dane dla gniazda zorientowanego na połączenie (na przykład TCP) do momentu wygaśnięcia domyślnego limitu czasu protokołu IP.
true (włączone) Przekroczenie limitu czasu bezzerowego Próbuje wysłać oczekujące dane do momentu wygaśnięcia określonego limitu czasu, a jeśli próba zakończy się niepowodzeniem, usługa Winsock zresetuje połączenie.
true (włączone) Limit czasu zerowego. Odrzuca wszystkie oczekujące dane. W przypadku gniazda zorientowanego na połączenie (na przykład TCP) usługa Winsock resetuje połączenie.

Stos adresów IP oblicza domyślny limit czasu protokołu IP do użycia na podstawie czasu rundy połączenia. W większości przypadków limit czasu obliczony przez stos jest bardziej istotny niż jeden zdefiniowany przez aplikację. Jest to domyślne zachowanie gniazda, gdy właściwość nie jest ustawiona LingerState .

LingerTime Jeśli właściwość przechowywana we LingerState właściwości jest większa niż domyślny limit czasu protokołu IP, domyślny limit czasu protokołu IP będzie nadal stosowany i zastępowany.

Dotyczy