草庐IT

ReceiveBufferSize

全部标签

C# 在系统上获取 Socket.ReceiveBufferSize 和 Socket.SendBufferSize 的最大值

我们的高吞吐量应用程序(~1gbps)受益于较大的ReceiveBufferSize和SendBufferSize。我注意到在我的机器上我可以有100MB的缓冲区大小,没有问题,但在一些客户端和测试机器上,最大值略高于10MB,而且似乎是可变的。是否有任何方法可以查询系统的最大tx/rx缓冲区大小。 最佳答案 实际上对于高性能网络SO_RCVBUF和SO_SNDBUF根据KB181611,选项应设置为0以避免缓冲区复制:IfyouusetheSO_RCVBUFandSO_SNDBUFoptiontosetzeroTCPstackre

.net - TcpClient.ReceiveBufferSize 会影响底层帧大小吗?

我最初认为这个问题的答案是“否”,但Wireshark似乎证明我错了。在我们的应用程序中,我们注意到较大的TcpClient接收缓冲区大小会导致多个消息被分组到更大的帧中。当我们将接收缓冲区大小减小到100字节时,Wireshark告诉我们我们的消息不再组合在一起,我们从服务器接收到更多、更小的帧。我的理解是TcpClient在更高层上运行,我们无法控制帧大小。我的理论是微小的缓冲区大小导致Windows协商微小的maximumsegmentsize,这会导致每个片段都适合一个框架。我离这里很远吗?根据MicrosoftDocs...TheReceiveBufferSizeproper