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

简介: 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开发等相关项目问题,可联系我们。

相关文章
|
网络协议 安全 网络安全
【UDP】——为什么 UDP 数据包不能超过 512 个字节
一开始了解的是 DNS 服务使用的是 UDP 协议,后面看到 DNS 服务主要使用 UDP 协议,在少数情况(传输的数据超过 512 个字节)下也会使用 TCP 协议,因为 UDP 数据包不能超过 512 个字节。那问题来了,为什么 UDP 数据包不能超过 512 个字节呢?
3016 0
【UDP】——为什么 UDP 数据包不能超过 512 个字节
|
6月前
|
网络协议 网络架构
LabVIEW在TCPIP和UDP中的应用
LabVIEW在TCPIP和UDP中的应用
160 0
|
存储 网络协议 安全
IPsec ESP 数据包的 UDP 封装
选择共享 IKE 和 UDP 封装的 ESP 流量的端口号是因为它提供了更好的扩展性(NAT 中只有一个 NAT 映射;无需发送单独的 IKE keepalive)、更容易配置(仅在防火墙中配置一个端口),更容易实现。
1334 0
IPsec ESP 数据包的 UDP 封装
|
Java 数据处理
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
497 0
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
|
Python
python伪造udp数据包
#!/usr/bin/python #coding:utf-8 import socket import struct from random import randint def checksum(data): ...
2330 0
|
网络协议 网络性能优化 安全
用户数据包协议(user datagram protocol)——UDP
用户数据报协议(User Datagram Protocol,UDP)是无连接不可靠传输层协议。它不提供主机到主机通信,它除了提供进程到进程之间的通信之外,就没有给 IP 服务增加任何东西。
1685 0
|
12天前
|
网络协议 算法 网络性能优化
|
7天前
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU