日期:2014-05-16  浏览次数:20777 次

发送大量数据,socket API最优分包长度为多少?
假设要通过socket发送一个几M的数据,该如何确定每次send的数据的大小。

------解决方案--------------------
首先看你的网络状况,其次socket的缓冲,你要知道这个缓冲可以设置大小的,所以没这个标准
------解决方案--------------------
尽量发大包吧,越大性能越好吧,tcp自己会分包控制大小的,

tcp就是流协议,无所谓分不分包的,你小包发的,他也可能组装成一个大包才发出去的。

书上这么说的,udp就不清楚了。


------解决方案--------------------
TCP 会采用 Nagle 算法自动将一些小的缓冲区连接到一个报文段中。这样可以通过最小化所发送的报文的数量来提高应用程序的效率.关键在于设置发送和接收缓冲区。
最优的 TCP socket 缓冲区大小=link_bandwidth * RTT 
RTT:发送报文与接收到另一端的响应之间的延时