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

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函数将返回错误,而另一个将继续等待直到超时到期。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值