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 个字节呢?
3229 0
【UDP】——为什么 UDP 数据包不能超过 512 个字节
|
7月前
|
网络协议 网络架构
LabVIEW在TCPIP和UDP中的应用
LabVIEW在TCPIP和UDP中的应用
183 0
|
存储 网络协议 安全
IPsec ESP 数据包的 UDP 封装
选择共享 IKE 和 UDP 封装的 ESP 流量的端口号是因为它提供了更好的扩展性(NAT 中只有一个 NAT 映射;无需发送单独的 IKE keepalive)、更容易配置(仅在防火墙中配置一个端口),更容易实现。
1388 0
IPsec ESP 数据包的 UDP 封装
|
Java 数据处理
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
511 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): ...
2339 0
|
网络协议 网络性能优化 安全
用户数据包协议(user datagram protocol)——UDP
用户数据报协议(User Datagram Protocol,UDP)是无连接不可靠传输层协议。它不提供主机到主机通信,它除了提供进程到进程之间的通信之外,就没有给 IP 服务增加任何东西。
1698 0
|
4天前
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
|
20天前
|
网络协议 网络性能优化 数据处理
深入解析:TCP与UDP的核心技术差异
在网络通信的世界里,TCP(传输控制协议)和UDP(用户数据报协议)是两种核心的传输层协议,它们在确保数据传输的可靠性、效率和实时性方面扮演着不同的角色。本文将深入探讨这两种协议的技术差异,并探讨它们在不同应用场景下的适用性。
54 4