Socket.LingerState Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger ett värde som anger om kommer att fördröja stängningen Socket av en socket i ett försök att skicka alla väntande data.
public:
property System::Net::Sockets::LingerOption ^ LingerState { System::Net::Sockets::LingerOption ^ get(); void set(System::Net::Sockets::LingerOption ^ value); };
public System.Net.Sockets.LingerOption? LingerState { get; set; }
public System.Net.Sockets.LingerOption LingerState { get; set; }
member this.LingerState : System.Net.Sockets.LingerOption with get, set
Public Property LingerState As LingerOption
Egenskapsvärde
En LingerOption som anger hur man dröjer sig vid stängning av en socket.
Undantag
Ett fel uppstod vid försök att komma åt socketen.
Har Socket stängts.
Exempel
Följande kodexempel visar hur egenskapen används LingerState .
static void ConfigureTcpSocket(Socket tcpSocket)
{
// Don't allow another socket to bind to this port.
tcpSocket.ExclusiveAddressUse = true;
// The socket will linger for 10 seconds after
// Socket.Close is called.
tcpSocket.LingerState = new LingerOption (true, 10);
// Disable the Nagle Algorithm for this tcp socket.
tcpSocket.NoDelay = true;
// Set the receive buffer size to 8k
tcpSocket.ReceiveBufferSize = 8192;
// Set the timeout for synchronous receive methods to
// 1 second (1000 milliseconds.)
tcpSocket.ReceiveTimeout = 1000;
// Set the send buffer size to 8k.
tcpSocket.SendBufferSize = 8192;
// Set the timeout for synchronous send methods
// to 1 second (1000 milliseconds.)
tcpSocket.SendTimeout = 1000;
// Set the Time To Live (TTL) to 42 router hops.
tcpSocket.Ttl = 42;
Console.WriteLine("Tcp Socket configured:");
Console.WriteLine($" ExclusiveAddressUse {tcpSocket.ExclusiveAddressUse}");
Console.WriteLine($" LingerState {tcpSocket.LingerState.Enabled}, {tcpSocket.LingerState.LingerTime}");
Console.WriteLine($" NoDelay {tcpSocket.NoDelay}");
Console.WriteLine($" ReceiveBufferSize {tcpSocket.ReceiveBufferSize}");
Console.WriteLine($" ReceiveTimeout {tcpSocket.ReceiveTimeout}");
Console.WriteLine($" SendBufferSize {tcpSocket.SendBufferSize}");
Console.WriteLine($" SendTimeout {tcpSocket.SendTimeout}");
Console.WriteLine($" Ttl {tcpSocket.Ttl}");
Console.WriteLine($" IsBound {tcpSocket.IsBound}");
Console.WriteLine("");
}
Kommentarer
Egenskapen LingerState ändrar hur Close metoden beter sig. Den här egenskapen ändrar under vilka förhållanden anslutningen kan återställas av Winsock när den ställs in. Anslutningsåterställning kan fortfarande ske baserat på IP-protokollbeteendet.
Den här egenskapen styr hur lång tid en anslutningsorienterad anslutning förblir öppen efter ett anrop till Close när data fortfarande ska skickas.
När du anropar metoder för att skicka data till en peer placeras dessa data i den utgående nätverksbufferten. Den här egenskapen kan användas för att säkerställa att dessa data skickas till fjärrvärden innan Close metoden släpper anslutningen.
Om du vill aktivera kvardröjande skapar du en LingerOption instans som innehåller önskade värden och anger egenskapen till den här instansen LingerState .
I följande tabell beskrivs metodens Close beteende för de möjliga värdena Enabled för egenskapen och egenskapen LingerTime som lagras i LingerState egenskapen.
| LingerState.Enabled | LingerState.LingerTime | Behavior |
|---|---|---|
false (inaktiverad), standardvärdet |
Tidsgränsen är inte tillämplig (standard). | Försöker skicka väntande data tills tidsgränsen för STANDARD-IP-protokollet upphör att gälla. |
true (aktiverad) |
En timeout som inte är noll | Försöker skicka väntande data tills den angivna tidsgränsen upphör att gälla, och om försöket misslyckas återställer Winsock anslutningen. |
true (aktiverad) |
En tidsgräns på noll. | Tar bort väntande data. För t.ex. anslutningsorienterad socket (TCP) återställer Winsock anslutningen. |
IP-stacken beräknar den standardtidsintervall för IP-protokollet som ska användas baserat på anslutningens tur och retur-tid. I de flesta fall är tidsgränsen som beräknas av stacken mer relevant än den som definieras av ett program. Det här är standardbeteendet för en socket när egenskapen LingerState inte har angetts.
När egenskapen LingerTime som lagras i LingerState egenskapen är större än tidsgränsen för STANDARD-IP-protokollet tillämpas och åsidosätts standardgränsen för IP-protokollet.