LingerOption.LingerTime Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Veriler gönderilmeye devam ederse yöntemini çağırdıktan Close() sonra bağlı kalmak için gereken süreyi alır veya ayarlar.
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
Özellik Değeri
çağrıldıktan Close()sonra bağlı kalma süresi (saniye) olarak değişir.
Örnekler
Aşağıdaki örnekte bu özelliğin değeri görüntülenir.
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
Açıklamalar
Kapatılan Socket bir kullanıcının zaman aşımına uğramadan önce ne kadar süreyle kaydedilmemiş verileri aktarmaya çalışacağını belirlemek istiyorsanız bu değeri kullanın. Bu değeri saniye cinsinden istediğiniz zaman aşımı süresine de ayarlayabilirsiniz.
Enabled özelliği ise true
ve 0 olarak ayarlarsanızLingerTime, Socket giden ağ arabelleğine gönderilecek bekleyen tüm verileri atar. Bu değeri değiştirirseniz, yöntemine değiştirilmiş LingerOption örneği SetSocketOption geçirmeniz veya veya LingerState özelliğini ayarlamanız LingerState gerekir.
Aşağıdaki tabloda özelliğin olası değerleri Enabled ve özelliğinde LingerState depolanan özelliğin LingerTime davranışı açıklanmaktadır.
enable |
seconds |
Davranış |
---|---|---|
false (devre dışı), varsayılan değer |
Zaman aşımı geçerli değildir (varsayılan). | Varsayılan IP protokolü zaman aşımı süresi dolana kadar bağlantı odaklı bir yuva (örneğin TCP) için bekleyen verileri göndermeye çalışır. |
true (etkin) |
Sıfır olmayan bir zaman aşımı | Belirtilen zaman aşımı süresi dolana kadar bekleyen verileri göndermeye çalışır ve deneme başarısız olursa Winsock bağlantıyı sıfırlar. |
true (etkin) |
Sıfır zaman aşımı. | Bekleyen tüm verileri atar. Bağlantı odaklı yuva (örneğin TCP) için Winsock bağlantıyı sıfırlar. |
IP yığını, bağlantının gidiş dönüş süresine göre kullanılacak varsayılan IP protokolü zaman aşımı süresini hesaplar. Çoğu durumda, yığın tarafından hesaplanan zaman aşımı, bir uygulama tarafından tanımlanandan daha ilgilidir. Özellik ayarlanmadığında LingerState yuva için varsayılan davranış budur.
LingerTime Özelliğinde LingerState depolanan özellik varsayılan IP protokolü zaman aşımından daha büyük olarak ayarlandığında, varsayılan IP protokolü zaman aşımı uygulanmaya ve geçersiz kılmaya devam eder.