绝对有挑战性! 又很有实际价值的一个问题: 如何让TCP传输更多的数据
描述:
我开发了一个通信程序, 测试20%丢包的环境中, TCP传数据的性能
结果, 我的程序要比 其他同类软件的带宽利用率低很多
也就是说在1分钟内, 抓包工具统计其他同类软件传输了600KB数据, 我的程序只传了300KB
(都是双向互发数据, 而且发的数据量基本一样多, 双方实际收到的数据也基本一样多)
保证测试了多次, 保证结果有效!
分析:
我们通过抓包工具, 分析其他软件主要有2个特点:
1) 数据包都很小
2) 收发频率都很快
所以我修改程序: 把socket的SO_SNDBUF设置为0, 并启动NODELAY选项
再测试发现我的程序也符合了1), 但2)不符合。
从抓包工具能明显看出其他软件收发频率 要比我的程序快很多
我的程序是纯粹通信,没有任何额外处理,可以肯定是使用tcp的问题
请教各位高手,是否遇到过这个问题?指点一下
或者给点你们认为可能有效的方法 万分感激!!