LingerOption.LingerTime Egenskap

Definition

Hämtar eller anger hur lång tid det tar att förbli ansluten efter att ha anropat Close() metoden om data fortfarande ska skickas.

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

Egenskapsvärde

Hur lång tid, i sekunder, för att förbli ansluten efter att ha anropat Close().

Exempel

I följande exempel visas värdet för den här egenskapen.

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

Kommentarer

Använd det här värdet om du vill avgöra hur länge en stängd Socket försöker överföra osedda data innan tidsgränsen nås. Du kan också ange det här värdet till önskad tidsgräns i sekunder.

Om egenskapen Enabled är true, och du anger LingerTime till 0, Socket tar bort väntande data som ska skickas i den utgående nätverksbufferten. Om du ändrar det här värdet måste du skicka den ändrade LingerOption instansen SetSocketOption till metoden eller ange LingerState egenskapen eller LingerState .

I följande tabell beskrivs beteendet för de möjliga värdena Enabled för egenskapen och egenskapen LingerTime som lagras i LingerState egenskapen.

enable seconds Behavior
false (inaktiverad), standardvärdet Tidsgränsen är inte tillämplig (standard). Försöker skicka väntande data för en anslutningsorienterad socket (t.ex. TCP) tills standardgränsen för 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.

Gäller för