建议使用C发送块大小?

我有一台服务器,每个请求需要传输大量数据(~2-2演出)。 每次调用发送应该具有的建议数据量是多少? 有关系吗?

TCP / IP堆栈负责不发送大于PATH MTU的数据包,你必须努力工作才能使它发送小于 MTU的数据包,这种方式无法提高吞吐量:而且没有办法dsicovering PTU实际上对于任何给定连接的路径。 因此,不要考虑路径MTU。

你可以而且应该让每个send()尽可能大。

您的数据包大小受协议的最大传输单元(MTU)限制。 如果发送的数据包大于MTU,则会出现数据包碎片。

你可以做一些数学运算: http : //www.speedguide.net/articles/mtu-what-difference-does-it-make–111更多参考文献: http : //en.wikipedia.org/wiki/Maximum_transmission_unit

但最终我的建议是,如果你的目标是足够好,只是让os网络层完成它的工作,除非你编写原始套接字或传递一些时髦的选项,很常见的是os将有一个网络缓冲区并将尝试尽力而为。

考虑到最后一个选项,socket.send()只不过是从用户进程内存到内核私有内存的内存传输。 经验法则是不超过通常为4KB的虚拟内存页面大小http://en.wikipedia.org/wiki/Page_(computer_memory )。