LingerOption.LingerTime Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 true
vlastnost 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.