İngilizce dilinde oku

Aracılığıyla paylaş


Socket.ReceiveBufferSize Özellik

Tanım

alma arabelleğinin Socketboyutunu belirten bir değeri alır veya ayarlar.

C#
public int ReceiveBufferSize { get; set; }

Özellik Değeri

Int32 Alma arabelleğinin bayt cinsinden boyutunu içeren bir. Varsayılan değer işletim sistemine bağlıdır.

Özel durumlar

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

Bir küme işlemi için belirtilen değer 0'dan küçük.

Örnekler

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

C#
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

Daha büyük bir arabellek boyutu, boş onayların (veri bölümü olmayan TCP paketleri) sayısını azaltabilir, ancak bağlantı güçlüklerinin tanınmasını da geciktirebilir. Büyük dosyaları aktarıyorsanız veya yüksek bant genişliği, yüksek gecikme süresi bağlantısı (uydu geniş bant sağlayıcısı gibi) kullanıyorsanız arabellek boyutunu artırmayı göz önünde bulundurun.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0