4

假设您正在通过 TCP/IP 以块的形式传输任意长度的文件:

looping...
    read(buffer, LENGTH)
    send(mysocket, buffer, LENGTH, flags)

我的问题是,LENGTH 的最佳值是多少?还是根本不重要?我已经看到使用了从 256 字节到 8192 字节的所有内容。

4

3 回答 3

3

取决于您所说的最佳。为了优化带宽使用,您希望最大化数据包大小,因此至少发送网络数据包大小(在以太网上通常约为 1500 字节)。如果您从磁盘读取 4096 或 8192 字节将是一个不错的值。

于 2011-02-09T22:50:14.387 回答
0

如果您的缓冲区大小转换为数据包大小,那么较短的缓冲区会更好 - 在数据包错误的情况下重新传输更少。

ATM 以 54 字节的数据包将这一点发挥到了极致。

但是根据您的库,它可能会自己进行一些缓冲并独立设置其数据包大小。YMMV。

于 2011-02-09T22:39:08.243 回答
0

如果您通过高延迟连接发送大量数据,则可以通过更大的发送缓冲区获得更好的吞吐量。这是一个很好的解释: http ://www.onlamp.com/pub/a/onlamp/2005/11/17/tcp_tuning.html

于 2017-04-04T13:56:30.063 回答