LabVIEW在快速传输速率下丢失UDP数据包

LabVIEW在快速传输速率下丢失UDP数据包

当UDP数据包以高数据速率(大于2Mb/s)传入时,它们开始丢失,特别是当CPU被其他任务加载时。为什么这些数据包会丢失?

LabVIEW在高数据速率下可能无法跟上UDP套接字缓冲器的步伐。仅当LabVIEW将缓冲器移入队列或将它写入文件时,才会发生此问题。一种解决方案是增加Windows套接字缓冲区的大小。这为LabVIEW提供了更多时间来操作缓冲器内容,并在传入数据溢出套接字缓冲器之前执行下一次缓冲器读取。

您可以通过调用wsock32.dll中的设置点函数来设置Windows套接字缓冲区的大小。附件的VI,用于自动设置和回读定义的套接字连接上的缓冲区大小,以及使用缓冲区集/读取VI的示例VI。对于TCP,可以使用类似的方法来提高传输速率。这些示例设置套接字缓冲区的大小(以字节为单位)。

注意:UDP不是无损协议,因此无法保证完全交付。增加Windows套接字缓冲区大小可能允许以更高的速率读取UDP数据包,但是,如果应用程序依赖于无损连接,则应使用另一种协议。

LabVIEW支持若干种底层协议,用于计算机之间的通信。

每种协议都与其它协议不同,尤其是引用远程计算机网络地址的方式。通常协议之间是不兼容的。例如,如果要在macOS和Windows之间通信,必须使用这两个平台上都能正常工作的协议,比如TCP。

TCP和UDP

LabVIEW支持的所有平台都可以使用传输控制协议(TCP)和用户数据报协议(UDP)。TCP是一种可靠的、基于连接的协议。它提供错误检测,确保数据按顺序并且不重复地到达。基于这些原因,TCP通常是网络应用程序的最佳选择。

尽管UDP性能比TCP更高且不需要连接,但UDP并不保证传输能够到达目的地。UDP通常用于不需要保证传输到达目的地的应用程序。例如,当一个应用程序以足够高的频率向目的地传输数据时,一部分数据段的丢失是无关紧要的。

使用打开UDP多点传送VI代替打开UDP函数,就可打开能在多点传送IP地址之间读写UDP数据的连接。多点传送IP地址定义了一个多点传送组。多点传送IP地址的范围是224.0.0.0到239.255.255.255。如客户机要加入一个多点传送组,客户机即订阅了该组的多点传送IP地址。在客户端获取了多点传送组后,该客户端可接收发送到多点传送IP地址的数据。

需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目问题,可联系我们。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值