LingerOption.LingerTime Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 true
wartość , 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.