连续TCP读写数据的时候性能差
主要软件:
主要软件版本: 6.1
主要软件修正版本: N/A
次要软件: N/A
问题: 我使用TCP在两个应用程序之间传输数据,首先将数据转换为字符串,然后通过TCP/IP传输数据,首先我传送数据的大小,然后传送数据本身。在客户端,使用两个连续的TCP 读函数,第一个读函数读取传递数据的大小,第二个读函数读取数据本身,当我只运行一次该VI,一切执行正常并且迅速,然而当我将该代码放置在一个while循环中,经过一段时间的迭代运行,执行速度下降,我的数据不是十分的复杂,为什么为导致数据传输率下降?
解答: 该操作使用的是标准的TCP 协议,Nagle 算法被大多数TCP/IP 堆栈使用并将紧密相邻的多个数据包整合为一个数据包进行发送,从而节约网络带宽,该算法自适应的根据通信告知信号来调整传送节奏,这就是单次传输不会出现该问题而多次数据传输将减缓传输速率。.
解决方法就是将数据和数据大小合成一个包发送,而不是使用两个数据包,将数据平化为字符串,然后将数据大小信息添加到字符串中,将整个字符串通过一个TCP 写传输,同时你依然可以使用两个TCP 读函数来分别解析数据大小和原始数据,附件中包含了一个 client/server VI,其体现了该特性,同时还包含了一个相关的客户端,注意仅仅客户端节点需要改变。
相关链接: Using the text above as a reference, please enter your edited text below:
附件: - ClientServerWriteRead.zip
报告日期: 03/26/2003
最近更新: 07/26/2009
文档编号: 2VPAE8FP
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.