LingerOption.LingerTime 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 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.