假设您正在通过TCP / IP传输任意长度的文件:
looping...
read(buffer, LENGTH)
send(mysocket, buffer, LENGTH, flags)
我的问题是,LENGTH的最佳价值是什么?或者根本没关系?我已经看到了从256字节到8192字节的所有内容。
答案 0 :(得分:2)
取决于你的最佳意思。为了最佳地使用带宽,您希望最大化数据包大小,以便至少发送网络数据包大小(在以太网上通常大约为1500字节)。如果您正在从磁盘4096读取或8192字节将是一个很好的值。
答案 1 :(得分:0)
如果您的缓冲区大小转换为数据包大小,则较短的缓冲区更好 - 在发生数据包错误时更少重新传输。
ATM通过一个54字节的数据包将其发挥到极致。
但是根据你的库,它可能正在做一些自己的缓冲并独立设置其数据包大小。 YMMV。
答案 2 :(得分:0)
如果您通过高延迟连接发送大量数据,则可以使用更大的发送缓冲区获得更好的吞吐量。这是一个很好的解释: http://www.onlamp.com/pub/a/onlamp/2005/11/17/tcp_tuning.html