法将数据写入传输连接: 你的主机中的软件中止了一个已建立的连接_LabVIEW_基于Network Steams 的无损传输技术...

2023-11-09

LabVIEW提供了用于创建分布式应用程序的多种技术的访问权限。LabVIEW 2010中引入的网络流是在这些应用程序之间流传输数据的理想方法。使用网络流,您可以轻松地在网络上或同一台计算机上共享数据。本文是对网络流进行介绍,并讨论了其功能和性能。

简介:

网络流是一种易于配置,紧密集成的动态通信方法,用于将数据从一个应用程序传输到另一个应用程序,其吞吐量和延迟特性与TCP相当。但是,与TCP不同,网络流直接支持任意数据类型的传输,而无需先将数据平化和平化为中间数据类型。网络流以向后兼容的方式使数据扁平化,这使使用不同版本LabVIEW运行时引擎的应用程序能够安全,成功地相互通信。网络流还具有增强的连接管理,如果由于网络中断或其他系统故障而导致断开连接,则可以自动恢复网络连接。流使用一种缓冲的,无损的通信策略,即使在具有间歇性网络连接的环境中,也可以确保写入流中的数据不会丢失。

具体用途

网络流是为无损,高吞吐量数据通信而设计和优化的。网络流使用单向,点对点缓冲的通信模型在应用程序之间传输数据。这意味着端点之一是数据的写入者,另一个是读取器。您可以使用两个流来完成双向通信,其中每台计算机都包含一个读取器和一个写入器,并与另一台计算机上的写入器和读取器配对。

由于构建的流具有与原始TCP相当的吞吐量特性,因此对于程序员不想处理使用TCP的复杂性的高吞吐量应用程序,流是理想的选择。流还可以用于无损,低吞吐量的通信,例如发送和接收命令。但是,如果需要绝对最低的延迟,则将流用于低吞吐量通信可能需要对何时通过流传输数据进行更明确的管理。

7cbb44db23175864411df137882efca4.png

基本编程模型
完成以下步骤以使用网络流创建和流传输数据:
1.创建端点并建立流连接。
2.读取或写入数据。
3.销毁端点。
下图显示了这些步骤的实现。

729f300f9c6fd810207564ed5070436f.png

接下来将详细介绍使用Network进行数据通信性能及注意事项.

端点网址
LabVIEW使用URL识别每个流端点。要连接两个端点并创建有效的网络流,必须使用“创建网络流端点读取器”或“创建网络流端点写入器”功能指定远程端点的URL。有关端点URL的更多详细信息,包括保留字符的转义码,可在LabVIEW帮助中的“指定网络流端点URL”主题下找到。但是,为了完整起见,这里还将提供URL的简短描述。

ni.dex://host_name:context_name/endpoint_name

以下列表描述了此URL的不同组成部分:

ni.dex是URL的协议,是可选的。如未在创建函数中指定ni.dex,LabVIEW将推断该协议。host_name是终结点计算机所在的项目的别名,DNS名称或IP地址。此外,字符串“ localhost”可以用作当前在其上执行代码的计算机的假名。如果将host_name留为空白,则将推断localhost。LabVIEW按以下顺序搜索匹配的主机名:项目别名,DNS名称,然后是IP地址。

context_name是标识终结点驻留在哪个应用程序上下文中的名称。仅当同一计算机上的多个应用程序实例正在使用网络流功能时,才需要此名称。(如果是比跑代码,这个名称就是LabVIEW,打包的程序就是程序名称、如果webService就是webService的名称)默认情况下,上下文名称为空字符串,并且所有端点均在默认上下文中创建。使用默认上下文时,可以省略冒号分隔符。endpoint_name是流终结点的实际名称。此名称可以是平面字符串或由正斜杠字符分隔的字符串的分层路径。例如,流1或子系统A /流1。您必须使用创建端点功能指定的URL会有所不同,具体取决于远程计算机的网络位置以及在创建端点时分配给端点的名称。

创建端点并建立流

网络流是写入器和读取器端点之间的连接。您可以使用“创建网络流编写器端点”或“创建网络流读取器端点”功能来创建端点。

c976e3f830d3865a66cf00b83a2fcb45.png

与TCP不同,网络流直接支持LabVIEW数据的传输,而不必在字符串之间展平和展平数据。网络流直接支持大多数LabVIEW数据类型。但是,一些值得注意的例外包括包含对象引用或LabVIEW类作为其类型一部分的数据类型。通过首先在类上创建转换方法以序列化和反序列化适当的类数据,仍可以间接传输类。由于引用是引用本地计算机上对象引用,因此通常无法尝试通过网络发送引用以供远程计算机使用。一个例外是视觉图像数据类型,如果安装了NI视觉开发模块,则可以使用。在这种情况下,通过使用对视觉图像数据的引用,流直接支持图像数据的传输。流不直接支持的任何数据类型都将需要转换代码,以将数据与一种支持的类型进行相互转换。另外,某些数据类型比其他数据类型更有效地通过流传输。有关所选数据类型如何影响流性能的更多信息,请参见性能注意事项部分。

除了创建端点资源之外,create函数还将链接书写者和阅读者端点在一起,以形成功能完善的流。首先创建的端点将等待,直到另一个端点已创建并准备好进行连接,这时两个创建功能都将退出。然后,该流已准备好传输数据。以这种方式使用时,create函数有效地充当了一个网络集合点,其中在流的两边都准备就绪或create调用超时之前,create函数都不会进行。

为了在两个端点之间建立流,必须满足三个条件。

1.两个端点都必须存在。此外,如果两个创建函数都指定了要链接的远程端点URL,则两个URL必须与要链接的端点匹配。

2.两个端点的数据类型必须匹配。

3.端点之一必须是只写端点,另一个端点必须是只读端点。

如果执行创建函数时最初不满足条件一个,它将等待直到超时到期,如果仍然不满足条件,则返回超时错误。如果两个端点都指定了要链接的另一个端点,并且只有一个URL匹配,则一个create函数将返回错误,而另一个将继续等待直到超时到期。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

法将数据写入传输连接: 你的主机中的软件中止了一个已建立的连接_LabVIEW_基于Network Steams 的无损传输技术... 的相关文章

  • 科技,让二次元老婆动起来

    想让你的二次元老婆动起来吗 前不久 Meta 也就是Facebook 发布了一款有趣的AI工具Animated Drawings 它可以让静态的儿童画动起来 有些懂行的朋友一看就说 哎呀这不就是关键点检测再加动态化嘛 道理是这个道理 但是儿
  • MYSQl:关于AUTO_INCREMENT

    auto increment是用于主键自动增长的 从1开始增长 当你把第一条记录删除时 再插入第二条数据时 主键值是2 不是1 问题来源 拷贝了公司项目的regions表 发现建表的sql语句如下 CREATE TABLE es regio
  • 两数求最大值 和 交换两个数字

    两数求最大值 include
  • 将图片进行base64 编码后的数据进行读取,以io流的方式传给前台并显示出来并且不断刷新图片

    前提摘要 最近做一个项目 是关于slam的 给slam发送构建地图的命令 slam不断返回json串 而地图的图片在json串中已经经过base64编码了 我这边需要将base64编码解析并以流的方式传给前台显示出来 但是消息是不断要接收的
  • 支付结算周期:D0 D1 T0 T1的区别

    D0 自然日当天 D1 自然日第二天 T0 工作日当天 T1 工作日第二天 D0和T0的区别 比如说 星期六做的交易 D0因为是自然日当天 所以周六即可到账 T0因为是工作日当天 所以下周一可到账
  • 在Windows10下配置深度学习环境(tensorflow-gpu + CUDA & CUDNN),十分详细,推荐小白食用

    在Windows10下配置深度学习环境 tensorflow gpu CUDA CUDNN 本文的基础建立在DUT汽院515教研室的师兄的教程之上 由本人总结更新 希望能帮到更多人 十分感谢师兄们的付出 CUDA的配置 请参考本人的另一篇文
  • 基于LSTM的情感识别在鹅漫评论分析中的实践与应用

    深度学习 深度神经网络 作为机器学习的一个重要分支 持续推动了很多领域的研究和应用取得新的进展 其中包括文本处理领域的情感分类问题 由于可以对文本进行更有效的编码及表达 基于深度学习的情感分类对比传统的浅层机器学习和统计学方法 可以取得更高
  • C++ public、protected 、 private使用详解

    1 类私有成员变量的访问 必须调用类成员函数来进行访问 对于protected成员 继承他的类可以直接在成员函数中调用 而对于私有成员 继承他的类要使用他们的值必须使用基类的成员函数 2 protected成员 基类对象不能调用自身prot
  • ajax中data参数json对象与json字符串的使用区别

    在jquery的ajax里面有个data参数 是客户的传给服务端的数据 我们先看第一种常见写法 前端代码 var username phone email num val var pwd password val ajax url logi
  • GDB 调试工具的使用和交叉编译安装

    作用 1 可以让我们的代码单步运行 并且可以打印出运行时各种变量的值 2 还可以调试各种 core 核心 文件 在启动 gdb 调试程序的时候 我们需要使用到 gcc g 命令指定 g 参数生成可执行调试程序 例如 g g main cpp
  • Proxy代理isExtensible方法

    介绍 isExtensible方法拦截Onject isExtensible操作 demo1 var p new Proxy isExtensible function target console log called return tr
  • redis 事务实现原理

    一 简介 Redis事务通常会使用MULTI EXEC WATCH等命令来完成 redis实现事务实现的机制与常见的关系型数据库有很大的却别 比如redis的事务不支持回滚 事务执行时会阻塞其它客户端的请求执行 二 事务实现细节 redis
  • 【电动车】基于多目标优化遗传算法NSGAII的峰谷分时电价引导下的电动汽车充电负荷优化研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 文献来源 4 Matlab代码实现 1 概述 文献来源 摘要 在研究电动汽车用户充电需求
  • Ajax的介绍及应用,XMLHttpRequest对象

    AJAX介绍 AJAX全称 Asynchronous JavaScript and XML 异步的 JavaScript 和 XML JS是同步执行的 从上往下依次执行 如果遇到请求将会等待服务器的响应 AJAX是用来 异步 和服务器交互的
  • 转骰子

    转骰子 题目描述 骰子是一个立方体 每个面一个数字 初始为左 1 右 2 前 3 观察者方向 后 4 上 5 下 6 用 123456 表示这个状态 放置到平面上 可以向左翻转 用 L表示向左翻转 1 次 可以向右翻转 用 R 表示 向右翻
  • 利用Python采集某站上的所有陪玩妹子信息!听说现在做陪玩的都非常漂亮?

    前言 我想应该很多男生都是会打游戏的吧 女生就手机游戏 王者 刺激战场这些应该多些 男生应该就是英雄联盟 穿越火线 绝地求生等等一系列的游戏吧 那么你知道陪玩是什么时候就冒出来的新职业吗 知道的话可以告诉我一下哦 今天咱们的主要目的还是玩爬
  • Docker容器网络更改

    1 添加自定义网络 默认是桥接模式 docker network create 网络名称 2 解除容器绑定的网络 docker network disconnect 网络名称 容器名称 3 为容器重新指定网络 docker network
  • 《数据结构、算法与应用C++语言描述》使用C++语言实现二维数组稀疏矩阵

    数据结构 算法与应用C 语言描述 使用C 语言实现二维数组稀疏矩阵 稀疏矩阵定义 一个mxn 的矩阵 如果大多数元素都是0 则称为稀疏矩阵 spare matrix 一个矩阵如果不是稀疏的 就称为稠密矩阵 dense matrix 在稀疏矩
  • 如何设计一个分布式系统去分析3亿条数据?

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 从一个新闻门户网站案例引入 推算一下你需要分析多少条数据 黄金搭档 分布式存储 分布式计算 这篇文章聊一个话题 什么是分布式计算系统 一 从一个新闻门户网站案例

随机推荐