gpt4 book ai didi

.net - 套接字编程的合适缓冲区大小是多少?

转载 作者:行者123 更新时间:2023-12-03 08:52:54 25 4
gpt4 key购买 nike

我们正在使用 .Net 和套接字。服务器正在使用 Socket.Sender(bytes[])方法,因此它只发送整个有效负载。另一方面,我们是消费数据的客户。 Socket.Receive(buffer[]) .在 Microsoft(和其他公司)的所有示例中,它们似乎都坚持使用 8192 的缓冲区大小。我们已经使用了这个大小,但我们时不时地向客户端发送超过此缓冲区大小的数据。

有没有办法确定服务器的发送方法向我们发送了多少数据?最佳缓冲区大小是多少?

最佳答案

即使您发送的数据比这更多,它也可能无法在一次 Receive 调用中使用。

您无法确定服务器发送了多少数据——它是一个数据流,而您只是一次读取数据块。您可以在一次 Send 调用中读取服务器发送的部分内容,或者可以在一次 Receive 调用中读取来自两次 Send 调用的数据。 8K 是一个合理的缓冲区大小 - 不会大到您会浪费大量内存,也不会小到您必须使用大量浪费的 Receive 调用。 4K 或 16K 也很可能会很好......我个人不会开始超过 16K 的网络缓冲区 - 我怀疑你很少填充它们。

您可以尝试使用一个非常大的缓冲区并记录每次调用中接收到的字节数进行实验 - 这会让您了解一般可用的字节数 - 但它不会真正显示使用较小缓冲区的效果。您对使用 8K 缓冲区有什么顾虑?如果是性能,您是否有任何证据表明代码的这一方面是性能瓶颈?

关于.net - 套接字编程的合适缓冲区大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2811006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com