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开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
25天前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
100 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
3天前
|
API
鸿蒙开发:切换至基于rcp的网络请求
本文的内容主要是把之前基于http封装的库,修改为当前的Remote Communication Kit(远场通信服务),无非就是通信的方式变了,其他都大差不差。
鸿蒙开发:切换至基于rcp的网络请求
|
15天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
22天前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
49 10
|
1月前
|
XML 开发工具 Android开发
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
ExoPlayer最初是为了解决Android早期MediaPlayer控件对网络视频兼容性差的问题而推出的。现在,Android官方已将其升级并纳入Jetpack的Media3库,使其成为音视频操作的统一引擎。新版ExoPlayer支持多种协议,解决了设备和系统碎片化问题,可在整个Android生态中一致运行。通过修改`build.gradle`文件、布局文件及Activity代码,并添加必要的权限,即可集成并使用ExoPlayer进行网络视频播放。具体步骤包括引入依赖库、配置播放界面、编写播放逻辑以及添加互联网访问权限。
127 1
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
|
1月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
61 2
|
3天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第39天】在数字化时代,网络安全和信息安全成为了我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和方法来保护自己的信息安全。
14 2
|
4天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第38天】本文将探讨网络安全与信息安全的重要性,包括网络安全漏洞、加密技术和安全意识等方面。我们将通过代码示例和实际操作来展示如何保护网络和信息安全。无论你是个人用户还是企业,都需要了解这些知识以保护自己的网络安全和信息安全。
|
3天前
|
存储 安全 网络安全
云计算与网络安全:探索云服务中的信息安全策略
【10月更文挑战第39天】随着云计算的飞速发展,越来越多的企业和个人将数据和服务迁移到云端。然而,随之而来的网络安全问题也日益突出。本文将从云计算的基本概念出发,深入探讨在云服务中如何实施有效的网络安全和信息安全措施。我们将分析云服务模型(IaaS, PaaS, SaaS)的安全特性,并讨论如何在这些平台上部署安全策略。文章还将涉及最新的网络安全技术和实践,旨在为读者提供一套全面的云计算安全解决方案。
|
3天前
|
存储 安全 网络安全
网络安全与信息安全:漏洞、加密技术与安全意识的交织
【10月更文挑战第39天】在数字化时代,网络安全与信息安全成为保护个人隐私和组织资产的重要屏障。本文将探讨网络安全中的常见漏洞、加密技术的应用以及提升安全意识的重要性。通过具体案例分析,我们将深入了解网络攻击的手段和防御策略,同时提供实用建议,以增强读者对网络安全的认识和防护能力。