Socket.LingerState Eigenschap

Definitie

Hiermee wordt een waarde opgehaald of ingesteld waarmee wordt aangegeven of de Socket sluiting van een socket wordt vertraagd bij een poging om alle in behandeling zijnde gegevens te verzenden.

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; }
member this.LingerState : System.Net.Sockets.LingerOption with get, set
Public Property LingerState As LingerOption

Waarde van eigenschap

Een LingerOption die aangeeft hoe u moet blijven hangen tijdens het sluiten van een socket.

Uitzonderingen

Er is een fout opgetreden bij het openen van de socket.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe de LingerState eigenschap wordt gebruikt.

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("");
}

Opmerkingen

De LingerState eigenschap verandert de manier waarop Close de methode zich gedraagt. Deze eigenschap wanneer deze eigenschap wordt ingesteld, wijzigt de voorwaarden waaronder de verbinding opnieuw kan worden ingesteld door Winsock. Het opnieuw instellen van verbindingen kan nog steeds plaatsvinden op basis van het gedrag van het IP-protocol.

Met deze eigenschap bepaalt u hoe lang een verbindingsgeoriënteerde verbinding open blijft na het aanroepen van Close gegevens die nog moeten worden verzonden.

Wanneer u methoden aanroept om gegevens naar een peer te verzenden, worden deze gegevens in de uitgaande netwerkbuffer geplaatst. Deze eigenschap kan worden gebruikt om ervoor te zorgen dat deze gegevens naar de externe host worden verzonden voordat de Close methode de verbinding verwijdert.

Als u lingering wilt inschakelen, maakt u een LingerOption exemplaar met de gewenste waarden en stelt u de LingerState eigenschap in op dit exemplaar.

In de volgende tabel wordt het gedrag van de Close methode beschreven voor de mogelijke waarden van de Enabled eigenschap en de LingerTime eigenschap die is opgeslagen in de LingerState eigenschap.

LingerState.Enabled LingerState.LingerTime Behavior
false (uitgeschakeld), de standaardwaarde De time-out is niet van toepassing (standaard). Pogingen om in behandeling zijnde gegevens te verzenden totdat de standaard time-out van het IP-protocol verloopt.
true (ingeschakeld) Een time-out voor niet-nul Probeert in behandeling zijnde gegevens te verzenden totdat de opgegeven time-out verloopt en als de poging mislukt, wordt de verbinding opnieuw ingesteld door Winsock.
true (ingeschakeld) Een time-out van nul. Verwijdert alle in behandeling zijnde gegevens. Voor verbindingsgeoriënteerde socket (BIJVOORBEELD TCP) stelt Winsock de verbinding opnieuw in.

De IP-stack berekent de standaard time-outperiode van het IP-protocol die moet worden gebruikt op basis van de retourtijd van de verbinding. In de meeste gevallen is de time-out die door de stack wordt berekend, relevanter dan één die is gedefinieerd door een toepassing. Dit is het standaardgedrag voor een socket wanneer de LingerState eigenschap niet is ingesteld.

Wanneer de LingerTime eigenschap die is opgeslagen in de LingerState eigenschap groter is dan de standaardtime-out van het IP-protocol, wordt de time-out van het standaard-IP-protocol nog steeds toegepast en overschreven.

Van toepassing op