Aracılığıyla paylaş


LingerOption.LingerTime Özellik

Tanım

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 trueve 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.

Şunlara uygulanır