Socket.ReceiveBufferSize 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,它指定 Socket 接收缓冲区的大小。
public:
property int ReceiveBufferSize { int get(); void set(int value); };
public int ReceiveBufferSize { get; set; }
member this.ReceiveBufferSize : int with get, set
Public Property ReceiveBufferSize As Integer
属性值
Int32,它包含接收缓冲区的大小(以字节为单位)。 默认值取决于操作系统。
例外
尝试访问套接字时出错。
为设置操作指定的值小于 0。
示例
下面的代码示例演示如何使用 ReceiveBufferSize 属性。
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("");
}
注解
较大的缓冲区大小可能会减少无数据部分) TCP 数据包 (空确认数,但也可能会延迟连接困难的识别。 如果要传输大型文件,或者使用的是高带宽、高延迟连接 ((如卫星宽带提供商),请考虑增加缓冲区大小。)