LabVIEW开发TCP网络通讯程序2

简介: LabVIEW开发TCP网络通讯程序2

LabVIEW开发TCP网络通讯程序2


初始化侦听器状态


此状态目前仅执行一次,其工作是创建启动与远程客户端连接的侦听器。节点有两个输入,第一个是侦听器将监视的端口。尽管我可以对此数字进行硬编码,但我选择从应用程序的属性派生此值。在独立可执行文件中,应用程序在启动时从其文件中读取此值,从而使其在部署应用程序后可重新配置。如果文件中不存在该键,则运行工引擎默认为LabVIEW的官方端口号3363。


a59b5f592eb093b3624e9da49f3af3ee.png


在开发环境中运行时,此值仍可重新配置,但通过目标的VI服务器设置进行设置。要更改此值,请在项目资源管理器窗口中单击鼠标右键,然后选择。在出现的对话框中,选择“类别”。此时,端口号字段在页面部分中可见,但已禁用。要编辑此值,请选中该框以启用该设置,进行所需的更改,然后取消选中该框,然后单击按钮。请务必记住在离开此设置之前取消选中。如果不这样做,项目将链接到指定的端口,并且测试平台应用程序中的TCP服务器在尝试启动时将引发错误60。


节点的另一个输入是超时。但是,这不是节点等待完成侦听器创建的时间。将在一台计算机上测试此代码,因此不必担心网络出现故障之类的事情。然而,出错的机会很多。例如,当客户端连接到我们的服务器时,网络可能出现问题。在通过指定连接尝试侦听器等待连接完成的时间,来解决这种情况。


等待连接状态


此状态等待连接尝试,当出现连接尝试时,完成连接。该操作采用轮询操作形式,其中代码会检查连接尝试,如果没有连接尝试,则等待一小段时间,然后再次检查。需要较短的等待期,以使整个流程有机会响应可能发生的其他事件。


a3078debf6296e6e7b34de570b75dd2b.png


如果在进行调用时没有挂起的连接尝试,或者在5毫秒的窗口内未收到尝试,则节点将终止,错误代码为56。查找并捕获该错误代码,以便其出现可用于决定下一步该做什么。如果子VI发现错误56,则将重复当前状态并将超时设置为1000毫秒。


如果连接尝试成功,节点还会输出该特定连接独有的新引用。此新引用将传递到移位寄存器,该寄存器可用于下一个状态。


生成处理程序状态


在此状态下,代码调用一个子VI(Launch Connection Handler.vi),该子VI生成一个进程来处理在先前状态下建立的远程连接。此连接处理程序采用可重入VI的形式,接受两个输入:对TCP连接的引用和启用调试操作的布尔输入。

ffdbb605da8e7212b86e48c66ff8d48b.png



连接处理程序必须是可重入进程非常重要,原因有两个:首先,我们希望代码能够一次处理多个连接。其次,listener需要尽快重新监听另一个新连接。


关闭侦听器状态


最后,当进程停止时,此事件将关闭打开的连接,将超时设置为-1,并停止事件循环。


be3d8d30434e6e53a29239abeae4e100.png



但是,为什么有两个连接需要关闭?为管理远程连接而启动的连接处理程序是否不会处理关闭该引用?虽然这一点是正确的,但其背后的逻辑是有缺陷的。在远程连接完成和开始执行之间有一个很小但有限的延迟。如果停止命令应该发生在这么小的时间窗口内,则处理程序将永远不会启动,因此无法关闭该新连接及其关联的引用。


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

相关文章
|
5天前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
22 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
1天前
|
网络协议
TCP报文格式全解析:网络小白变高手的必读指南
本文深入解析TCP报文格式,涵盖源端口、目的端口、序号、确认序号、首部长度、标志字段、窗口大小、检验和、紧急指针及选项字段。每个字段的作用和意义详尽说明,帮助理解TCP协议如何确保可靠的数据传输,是互联网通信的基石。通过学习这些内容,读者可以更好地掌握TCP的工作原理及其在网络中的应用。
|
1月前
|
API
鸿蒙开发:切换至基于rcp的网络请求
本文的内容主要是把之前基于http封装的库,修改为当前的Remote Communication Kit(远场通信服务),无非就是通信的方式变了,其他都大差不差。
鸿蒙开发:切换至基于rcp的网络请求
|
25天前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
36 2
|
26天前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
53 3
|
1月前
|
存储 网络协议 物联网
C 语言物联网开发之网络通信与数据传输难题
本文探讨了C语言在物联网开发中遇到的网络通信与数据传输挑战,分析了常见问题并提出了优化策略,旨在提高数据传输效率和系统稳定性。
|
1月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
8天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
46 17
|
18天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
19天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
40 10