Socket.LingerState Özellik

Tanım

Bekleyen tüm verileri gönderme girişiminde yuvanın kapatılmasını Socket geciktirip geciktirmeyeceğini belirten bir değeri alır veya ayarlar.

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

Özellik Değeri

Yuvayı LingerOption kapatırken nasıl oyalandığını belirten bir.

Özel durumlar

Yuvaya erişmeye çalışılırken bir hata oluştu.

Örnekler

Aşağıdaki kod örneği özelliğinin LingerState kullanımını gösterir.

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 = gcnew 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 {0}", 
        tcpSocket->ExclusiveAddressUse);
    Console::WriteLine("  LingerState {0}, {1}", 
        tcpSocket->LingerState->Enabled,
        tcpSocket->LingerState->LingerTime);
    Console::WriteLine("  NoDelay {0}",
        tcpSocket->NoDelay);
    Console::WriteLine("  ReceiveBufferSize {0}", 
        tcpSocket->ReceiveBufferSize);
    Console::WriteLine("  ReceiveTimeout {0}",
        tcpSocket->ReceiveTimeout);
    Console::WriteLine("  SendBufferSize {0}",
        tcpSocket->SendBufferSize);
    Console::WriteLine("  SendTimeout {0}",
        tcpSocket->SendTimeout);
    Console::WriteLine("  Ttl {0}",
        tcpSocket->Ttl);
    Console::WriteLine("  IsBound {0}",
        tcpSocket->IsBound);
    Console::WriteLine("");
}
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("");
}

Açıklamalar

LingerState özelliği yöntemin davranış biçimini Close değiştirir. Ayarlandığında bu özellik, winsock tarafından bağlantının sıfırlanabileceği koşulları değiştirir. Bağlantı sıfırlama işlemleri IP protokolü davranışına bağlı olarak yine de gerçekleşebilir.

Bu özellik, bağlantı odaklı bir bağlantının, veriler gönderilmeye devam ettiğinde çağrısından Close sonra açık kalacağı süreyi denetler.

Eşe veri gönderme yöntemlerini çağırdığınızda, bu veriler giden ağ arabelleğine yerleştirilir. Bu özellik, yöntem bağlantıyı bırakmadan önce bu verilerin uzak ana bilgisayara gönderilmesini Close sağlamak için kullanılabilir.

Kalanları etkinleştirmek için, istenen değerleri içeren bir LingerOption örnek oluşturun ve özelliğini bu örneğe ayarlayın LingerState .

Aşağıdaki tabloda, özelliğinin Close olası değerleri Enabled ve özelliğinde LingerState depolanan özellik için yönteminin LingerTime davranışı açıklanmaktadır.

LingerState.Enabled LingerState.LingerTime 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 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