我假设100个字节太小,并且可以减慢所有写入的较大文件传输速度,但像1MB这样的东西似乎可能太多了.有没有人对每次写入的最佳字节块有什么建议,以便通过网络发送数据?
为了详细说明,我正在实现通过网络连接发送数据并显示正在发送的数据的进度.我注意到如果我每次写入大约100个字节发送大文件,它非常慢,但进度条非常好.但是,如果我每次写入发送1M,那么速度要快得多,但由于发送了更大的块,进度条不能很好地工作.
不,没有通用的最佳字节大小.
TCP数据包可能会碎片化,虽然假设从这里到目的地的所有内容都是真正的以太网并且数据包大小很大,但实际上即使您可以获得所有单个网络的数据包大小也是如此需要,您发送的每个数据包可能会通过互联网采取不同的路径.
这不是你可以"解决"的问题,并且没有通用的理想尺寸.
尽可能快地将数据提供给操作系统和TCP/IP堆栈,它将动态调整数据包大小到网络连接(您应该看到它们用于此优化的代码 - 它真的非常有趣.至少在更好的堆栈上.)
但是,如果您控制所使用的所有网络和堆栈以及客户端/服务器之间的所有网络和堆栈,那么您可以进行一些手动调整.但一般来说,在我建议您接近之前,您必须非常好地掌握网络和发送的数据.
-亚当
如果可以,只需让IP堆栈处理它; 大多数操作系统已经内置了很多优化功能.例如,Vista会动态改变各种参数以最大化吞吐量; 再猜测算法不太可能有益.
在高阶语言中尤其如此,远离实际的线路,如C#; 你和实际的TCP/IP数据包之间有足够的层,我希望你的代码对吞吐量的影响相对较小.
最糟糕的是,在各种情况下为自己测试各种消息大小; 很少有解决方案是一刀切的.