(10)申请公布号
(43)申请公布日 (21)申请号 201510968696.1
(22)申请日 2015.12.21
H04L 29/08(2006.01)
(71)申请人北方信息控制集团有限公司
地址210000 江苏省南京市将军大道528号
(72)发明人王殷辉 岳东峰 许畅 张玲
王锦晨 靳凯文 康静 刘严岩
江永健 高甜容 李琳超 王砾
施金金
(74)专利代理机构南京理工大学专利中心
32203
代理人
王培松
(54)发明名称
一种不稳定网络环境下的DDS 数据交互方法
(57)摘要
本发明提出一种不稳定网络环境下DDS 数据
交互方法,旨在解决使用DDS 中间件在不稳定网
络中传递数据时,DDS 中间件中的实体注册失败
导致应用无法正常运行的问题,以及在不同网络
状态下创建的实体之间数据无法正常交互的问
题,通过实时检测网络状态,根据当前网络状态更
改DDS 中间件的实体对象的属性,实现数据正常
通信。在监控网络状态的实时运行过程中,及时反
馈网络状态,将根据反馈的网络状态调整DDS 实
体的状态,最终保证DDS 的稳定运行,方同时维持
了DDS 实体对象在网络状态发生变化时的订阅状
态,上层用户既可以感受到网络状态发生变化,又
买狗的不会影响当前数据的正常订阅,从而保证数据通
信的稳定性。(51)Int.Cl.
(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1页 说明书4页 附图4页CN 106899645 A 2017.06.27
C N 106899645
A
1.一种不稳定网络环境下DDS数据交互方法,其特征在于,包括以下步骤:和平精英名字
第一步:调用DDS的注册函数接口进行DDS实体对象的创建;
第二步:调用LINUX底层的管理设备驱动程序中设备I/O通道的ioctl函数获得当前系统的所有网络接口信息,将得到的所有网络接口信息保存到ifconf结构中,遍历ifconf结构体,将每个接口信息保存到ifreq结构体中,剔除本地回环的网络接口,再次调用ioctl接口得到每个ifreq结构体中网络接口的状态,由此判断当前网络连接是否正常;
第三步:根据当前网络情况创建DDS中间件的实体对象,若是网络运行正常,则创建基于网络接口与共享内存的DDS中间件的实体对象,这种DDS实体对象具有这样的属性:既可与本终端主题与QOS均
相匹配的DDS实体对象通信,也可与其他终端相匹配的DDS实体对象通信;若是没有网络连接,则创建基于本终端回环地址的DDS实体,这种DDS实体对象具有这样的属性:只可与本终端相匹配的DDS实体对象通信,不可以与其他终端上的任何DDS实体对象通信;
第四步:开启实时监控网络状态的线程,线程中调用第二步中的方法获得实时网络状态;
第五步:设置当前记录DDS实体对象订阅状态的初始值;
第六步:若是订阅端,记录DDS中间件的实体对象当前的订阅状态,若实体对象放弃了对某种策略数据的订阅,记录数据实时更新,当前的记录一直保持实体对象最新的订阅状态;
第七步:在监控网络状态的线程给出网络状态发生变化的信息时,注销当前正在运行的DDS中间件的实体对象,创建基于当前网络状态的新的DDS中间件的实体对象,创建方法与第三步相同;
第八步:根据在网络状态发生变化之前记录的DDS实体对象的订阅信息,重新订阅,保证上层应用需要的数据不会因为网络状态发生变化而不再订阅:重置当前记录DDS实体对象订阅状态为第二步中的初始值;
第九步:转到第四步,监控当前网络状态。
2.根据权利要求1所述的不稳定网络环境下DDS数据交互方法,其特征在于,在前述监控网络状态的线程实时运行过程中,及时反馈网络状态,根据反馈的网络状态调整DDS实体的状态,最终保证DDS的稳定运行,同时维持DDS实体对象在网络状态发生变化时的订阅状态。
权 利 要 求 书1/1页CN 106899645 A
一种不稳定网络环境下的DDS数据交互方法
技术领域
[0001]本发明属于通信工程技术领域,特别是一种不稳定网络环境下DDS数据交互方法。
背景技术
[0002]信息化世界面对的是复杂多变的海量数据信息,实时高效高速的进行数据交互有着至关重要的作用,而实时信息系统呈现出以网络为中心的发展趋势。随着网络的高速发送,分布式的应用系统在金融、交通、军事等多个领域有着举足轻重的地位。
[0003]不同的通信平台,不同的用户在进行数据传输时有着不同的服务质量(QOS)的要求,目前的网络中节点的通信主要有以下三种:点对点通信,客户端/服务器(C/S)通信,发布/订阅通信。
[0004]点对点通信是一种最简单的通信方式,电话和TCP传输是典型的点对点通信,电话无法胜任多点之间的同时通信,TCP对于多个节点之间的通信会趋于复杂化。
[0005]客户端/服务器(C/S)通信,是一种多对一的通信方式,即一个中心服务器对多个客户端,客户端必须先绑定在服务器上才可以获取数据信息,两者之间具有高耦合性。这种通信方式在数据分布集中或要求集中处理的情况下较为适用,如数据库与文件系统。但是当信息在多个节点上生成时,C/S模式要求将信息全部备份到服务器端,在向后续发出数据请求的客户端发送数据,由此导致的数据交互效率低,实时性差。
[0006]国际对象管理组织(OMG)推出了数据分发服务(DDS)的基于发布/订阅通信方式的新规范。DDS中对分布式实时系统中数据发布、传送和订阅的接口与行为进行来描述,独立于平台系统,能够处理分布式的数据传输网络,完成数据高效、高速的交互。
发明内容
[0007]本发明的目的在于提供本发明提出一种不稳定网络环境下DDS数据交互方法,利用这种方法可实时检测网络状态,根据当前网络状态更改DDS中间件的实体对象的属性,从而保证不同网络状态下的DDS实体间正常通信。
[0008]实现本发明目的的技术方案为:西藏温泉
[0009]一种不稳定网络环境下DDS数据交互方法,包括以下步骤:
[0010]第一步:调用DDS的注册函数接口进行DDS实体对象的创建;
[0011]第二步:调用LINUX底层的管理设备驱动程序中设备I/O通道的ioctl函数获得当前系统的所有网络接口信息,将得到的所有网络接口信息保存到ifconf结构中,遍历ifconf结构体,将每个接口信息保存到ifreq结构体中,剔除本地回环的网络接口,再次调用ioctl接口得到每个ifreq结构体中网络接口的状态,由此判断当前网络连接是否正常;[0012]第三步:根据当前网络情况创建DDS中间件的实体对象,若是网络运行正常,则创建基于网络接口与共享内存的DDS中间件的实体对象,这种DDS实体对象既可与本终端主题与QOS均相匹配的DDS实体对象通信,也可以与其他终端相匹配的DDS实体对象通信;若是没有网络连接,则创建基于本终端回环地址的DDS实体,这种DDS实体对象只可以与本终端相
匹配的DDS实体对象通信,不可以与其他终端上的任何DDS实体对象通信;
[0013]第四步:开启实时监控网络状态的线程,线程中调用第二步中的方法获得实时网络状态;
[0014]第五步:设置当前记录DDS实体对象订阅状态的初始值;
[0015]第六步:若是订阅端,记录DDS中间件的实体对象当前的订阅状态,若实体对象放弃了对某种
策略数据的订阅,记录也会实时更新,当前的记录永远保持实体对象最新的订阅状态;
[0016]第七步:在监控网络状态的线程给出网络状态发生变化的信息时,注销当前正在运行的DDS中间件的实体对象,创建基于当前网络状态的新的DDS中间件的实体对象,同第三步;
[0017]第八步:根据在网络状态发生变化之前记录的DDS实体对象的订阅信息,重新订阅,保证上层应用需要的数据不会因为网络状态发生变化而不再订阅:重置当前记录DDS实体对象订阅状态为第二步中的初始值;
[0018]第九步:转到第四步,监控当前网络状态。
[0019]在前述监控网络状态的线程实时运行过程中,及时反馈网络状态,提出的方案将根据反馈的网络状态调整DDS实体的状态,最终保证DDS的稳定运行,方案中同时维持了DDS 实体对象在网络状态发生变化时的订阅状态,上层用户既可以感受到网络状态发生变化,又不会影响当前数据的正常订阅,从而保证数据通信的稳定性。
[0020]本发明与现有技术相比,其显著优点为:
[0021](1)通过本发明,实现了一种不稳定网络环境下DDS数据交互方法;
[0022](2)通过本发明,建立了实时监控网络状态的方法;
[0023](3)通过本发明,解决了不同网络状态下建立的DDS实体对象无法正常通信的问题;
[0024](4)通过本发明,提高了不稳定网络下使用DDS进行通信的稳健性。
[0025]下面结合附图对本发明作进一步详细描述。
附图说明
[0026]图1基于DDS中间件的发送方的处理过程示意图。
[0027]图2基于DDS中间件的订阅方的处理过程示意图。
[0028]图3基于DDS中间件的相同终端收发双方工作的时序示意图。
[0029]图4基于DDS中间件的不同终端收发双方工作的时序示意图。
具体实施方式
[0030]根据本发明的实施例,一种不稳定网络环境下DDS数据交互方法,包括以下步骤:[0031]第一步:调用DDS的注册函数接口进行DDS实体对象的创建;
[0032]第二步:调用LINUX底层的管理设备驱动程序中设备I/O通道的ioctl函数获得当前系统的所有网络接口信息,将得到的所有网络接口信息保存到ifconf结构中,遍历ifconf结构体,将每个接口信息保存到ifreq结构体中,剔除本地回环的网络接口,再次调用ioctl接口得到每个ifreq结构体中网络接口的状态,由此判断当前网络连接是否正常;
含有星的诗句[0033]第三步:根据当前网络情况创建DDS中间件的实体对象,若是网络运行正常,则创建基于网络接口与共享内存的DDS中间件的实体对象,这种DDS实体对象既可与本终端主题与QOS均相匹配的DDS实体对象通信,也可以与其他终端相匹配的DDS实体对象通信;若是没有网络连接,则创建基于本终端回环地址的DDS实体,这种DDS实体对象只可以与本终端相匹配的DDS实体对象通信,不可以与其他终端上的任何DDS实体对象通信;
[0034]第四步:开启实时监控网络状态的线程,线程中调用第二步中的方法获得实时网络状态;
[0035]第五步:设置当前记录DDS实体对象订阅状态的初始值;全国知名高中
[0036]第六步:若是订阅端,记录DDS中间件的实体对象当前的订阅状态,若实体对象放弃了对某种策略数据的订阅,记录也会实时更新,当前的记录永远保持实体对象最新的订阅状态;
[0037]第七步:在监控网络状态的线程给出网络状态发生变化的信息时,注销当前正在运行的DDS中间件的实体对象,创建基于当前网络状态的新的DDS中间件的实体对象,同第三步;
好听的日韩歌曲[0038]第八步:根据在网络状态发生变化之前记录的DDS实体对象的订阅信息,重新订阅,保证上层应用需要的数据不会因为网络状态发生变化而不再订阅:重置当前记录DDS实体对象订阅状态为第二步中的初始值;
[0039]第九步:转到第四步,监控当前网络状态。
[0040]在前述监控网络状态的线程实时运行过程中,及时反馈网络状态,提出的方案将根据反馈的网络状态调整DDS实体的状态,最终保证DDS的稳定运行,方案中同时维持了DDS 实体对象在网络状态发生变化时的订阅状态,上层用户既可以感受到网络状态发生变化,又不会影响当前数据的正常订阅,从而保证数据通信的稳定性。
[0041]本发明旨在解决使用DDS中间件在不稳定网络中传递数据时,DDS中间件中的实体注册失败导致应用无法正常运行的问题,以及在不同网络状态下创建的实体之间数据无法正常交互的问题,提出了一种实时检测网络状态,根据当前网络状态更改DDS中间件的实体对象的属性,实现数据正常通信的方法。
[0042]下面结合图1-图4所示,根据具体地说明前述方案的一个示例性实现。
[0043]结合图1所示的基于DDS中间件的发送方在启动以及运行过程中的处理逻辑图。具体的步骤如下:
[0044]第一步:发送方启动。
[0045]第二步:访问LINUX的底层网络接口,然后依次遍历非本地回环地址的网络接口判断是否有网络接口正在运行。
[0046]第三步:根据当前网络情况创建DDS中间件的实体对象。若是网络运行正常,则创建基于网络接口与共享内存的DDS中间件的实体对象;若是没有网络连接,则创建基于本终端回环地址的DDS实体,并记录当前的网络状态。
[0047]第四步:开启实时监控网络状态的线程,线程中调用第二步中的方法获得实时网络状态,判断网络情况是否发生变化。
[0048]第五步:设置当前记录DDS实体对象订阅状态的初始值为无,发送端发送用户数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论