发送大量数据,socket API最优分包长度为多少?
假设要通过socket发送一个几M的数据,该如何确定每次send的数据的大小。
[解决办法]
首先看你的网络状况,其次socket的缓冲,你要知道这个缓冲可以设置大小的,所以没这个标准
[解决办法]
尽量发大包吧,越大性能越好吧,tcp自己会分包控制大小的,
tcp就是流协议,无所谓分不分包的,你小包发的,他也可能组装成一个大包才发出去的。
书上这么说的,udp就不清楚了。
[解决办法]
TCP 会采用 Nagle 算法自动将一些小的缓冲区连接到一个报文段中。这样可以通过最小化所发送的报文的数量来提高应用程序的效率.关键在于设置发送和接收缓冲区。
最优的 TCP socket 缓冲区大小=link_bandwidth * RTT
RTT:发送报文与接收到另一端的响应之间的延时