Sdílet prostřednictvím


LingerOption.LingerTime Vlastnost

Definice

Získá nebo nastaví dobu, která má zůstat připojena po volání Close() metody, pokud data zůstanou odeslána.

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

Hodnota vlastnosti

Doba v sekundách, která má zůstat připojená po volání Close().

Příklady

Následující příklad zobrazuje hodnotu této vlastnosti.

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

Poznámky

Tuto hodnotu použijte, pokud chcete určit, jak dlouho se uzavřený Socket pokus o přenos neodpovídaná data před vypršením časového limitu. Tuto hodnotu můžete také nastavit na požadované období časového limitu v sekundách.

Enabled Pokud je truevlastnost a nastavíte LingerTime na hodnotu 0, Socket zahodí všechna čekající data, která se odešlou do vyrovnávací paměti odchozí sítě. Pokud změníte tuto hodnotu, je nutné předat změněnou LingerOption instanci SetSocketOption metodě nebo nastavit LingerStateLingerState nebo vlastnost.

Následující tabulka popisuje chování možných hodnot Enabled vlastnosti a LingerTime vlastnosti uložené ve LingerState vlastnosti.

enable seconds Chování
false (zakázáno), výchozí hodnota Časový limit se nedá použít (výchozí). Pokusy o odeslání čekajících dat pro soket orientovaný na připojení (například TCP) do vypršení časového limitu výchozího protokolu IP.
true (povoleno) Nenulový časový limit Pokusí se odeslat čekající data, dokud nevyprší zadaný časový limit, a pokud pokus selže, winsock resetuje připojení.
true (povoleno) Vypršení časového limitu nuly Zahodí všechna čekající data. V případě soketu orientovaného na připojení (například TCP) winsock resetuje připojení.

Zásobník IP adres vypočítá výchozí období časového limitu protokolu IP, které se má použít, na základě doby odezvy připojení. Ve většině případů je časový limit vypočítaný zásobníkem relevantnější než časový limit definovaný aplikací. Toto je výchozí chování soketu, pokud není nastavena LingerState vlastnost.

LingerTime Pokud je vlastnost uložená ve LingerState vlastnosti nastavena na vyšší než výchozí časový limit protokolu IP, bude stále platit a přepsán výchozí časový limit protokolu IP.

Platí pro