一种C/S模式的DDS通信系统及方法与流程

文档序号:14363822阅读:1188来源:国知局
一种C/S模式的DDS通信系统及方法与流程

本发明涉及数据通信领域,尤其涉及一种C/S模式的DDS通信系统及方法。



背景技术:

DDS是工业数据分发标准,在标准中数据是终端到终端的,即machine-to-machine简称m2m。目前所实现的DDS通信系统中,均为P2P(Peer to Peer,即对等网络)通信模式,数据发布(Data Publish)之后由数据订阅端(Data Subscribe)接接收,是传统的点对点的通信模式。该模式实现的通信系统灵活性和扩展性差,需要数据发布时必须指定数据订阅端的IP和Socket,难以实现动态的终端加入。现有的DDS通信系统中,在有内部网络情况下,比如有路由存在时,外部网络直接发布数据到内部网络,给内部网络带来很大的安全问题。



技术实现要素:

针对现有DDS通信系统的缺陷,同时增强系统的功能,本发明提供了一种C/S模式的DDS通信系统及方法。

为了解决上述技术问题,本发明的技术方案如下:

一种C/S模式的DDS通信系统,包括数据发布者、数据发布者对应的中间件、数据订阅者、数据订阅者对应的中间件,还包括服务器,所述服务器设置在数据发布者对应的中间件与数据订阅者对应的中间件之间,所述服务器包括监听模块中间件、缓冲区模块、配置模块、发布模块中间件;

所述监听模块中间件用于监听从数据发布者发布的数据,当数据发布者没有接入系统或者数据发布者没有数据发布时,监听模块处于等待状态;

所述缓冲区模块用于存储监听模块中间件接收到的数据,并提供给发布模块中间件读取;

所述发布模块中间件用于将数据发布给数据订阅者,当缓冲模块中的缓冲区没有数据时处于等待状态;

所述配置模块包含两类配置:监听配置、发布配置;监听配置用于配置监听模块中间件,发布配置用于配置发布模块中间件。

一种C/S模式的DDS通信方法,,包括如下步骤:

21)在数据发布者对应的中间件与数据订阅者对应的中间件之间配置服务器;

22)初始化服务器包括对服务器进行配置和中间件初始化:服务器配置分为监听模块中间件的配置和发布模块中间件的配置,包括服务器IP、IP类型、Socket端口设置、以及其中中间件的配置选项,在修改完成服务器配置后,启动服务器进程进行中间件初始化,中间件的初始化根据配置文件中的Socket端口向操作系统申请相应的端口号,以及分配中间件的缓冲区,如果申请端口号失败,则服务器启动失败,如果成功,则完成服务器初始化;

23)缓冲区模块的申请和设置包括缓冲区的申请和配置:首先申请缓冲区,如果失败,退出服务器进程,如果成功,进行申请的缓冲区配置;配置缓冲区是对缓冲区的读写权限进行配置,在监听模块中间件接收到数据之后,通过线程往缓冲区写入数据,此时进行控制写操作,读权限针对发布模块中间件,如果缓冲区不为空,发布模块中间件读取其中数据;

24)监听模块中间件工作过程包括初始化、监听以及写往缓冲区三步:初始化过程包括监听模块中级件的Topic设置,如果有多种Topic,则需监听多种数据;在监听模块中间件启动之后,一直处于监听状态,如果收到数据,则写往缓冲区,如果没有数据到达,则继续监听;写缓冲区是监听模块中间件在接收到数据之后的工作过程,如果有多个Topic,为了防止多个数据同时到达的情形,需要对缓冲区进行写保护操作;

25)发布模块中间件工作过程包括初始化、查询缓冲区和发布数据三步:初始化过程包括发布模块中间件的Topic设置、发布数据的属性设置,如果有多种Topic,则需对不同的Topic进行不同的属性设置;在发布模块中间件启动后,一直对缓冲区进行查询操作,一旦发现缓冲区不为空,读取缓冲区中数据,并进行数据发布。

本发明的有益效果在于:在标准DDS通信系统上实现的C/S模式的DDS通信系统,新增的服务器实现了数据发布者和数据订阅者之间的分离,数据发布者不再直接将数据发往数据订阅者,数据订阅者的身份和地址对于数据发布者而言是透明保密的。DDS通信系统的安全性大为提高,实现了数据发布者和数据订阅者之间的分离,数据订阅者不再公开身份和地址;服务器可以对数据进行检测,有效的降低了P2P模式下DDS通信系统中垃圾数据带来的安全隐患。

附图说明

图1为本发明实施例的工程流程示意图;

图2为服务器详细设计示意图。

具体实施方式

下面将结合附图和具体实施例对本发明做进一步的说明。

本发明的主要思想:P2P的DDS通信模式作为基本的DDS的通信模式,直接以数据为中心(Data-Centric)进行实时数据发布订阅,具有高效率高实时性的优点,同时P2P的模式也存在终端不便于管理、不能动态加入、通信双方安全隐患等问题。C/S模式的通信方式可以很好的解决上述问题,同时又具有DDS通信高效的优点。

C/S模式的实现原理:P2P的DDS模型中发布者直接将数据发布出去,订阅者如果在监听相同主题(Topic)的数据,则可以接收该数据。在C/S利用现有的DDS模型,增加一个服务器进行管理。服务器的具体实现:服务器中的监听模块监听来自发布者的数据,当Topic一致时,接收该数据,并将数据存储到缓冲区,这样每一个发布者只需要知道服务器的IP和Socket端口即可,不需要知道每个订阅的地址,能有效的隔离了发布者和订阅者,保证了订阅者的安全;服务器中的发布模块在检测到缓冲区有数据时,进行数据发布,订阅者接收相同Topic的数据,如果订阅者能接收到服务器的广播数据,则直接采用广播方式,不需要修改服务器配置模块中发布配置;如果不能接收到广播数据也只需要将该订阅者加入到服务器配置模块中的发布配置中,与P2P模式相比,只需修改服务器配置即可,方便的实现了动态加入。同时,C/S模式允许服务器可以接收多种Topic,这样可以将不同的发布者的数据进行集中式处理,再由服务器发布给订阅者。

如图1所示,本发明提供的C/S模式DDS通信模型,在基本的P2P模式下,增加服务器,整个系统包括若干数据发布者、数据订阅者、每个发布者和订阅者都有对应的中间件,服务器包含监听模块中间件、缓冲区模块、配置模块、发布模块中间件。

如图2所示,本发明中服务器主要有四个步骤:初始化服务器、缓冲区模块的申请和配置、监听模块启动、发布模块启动。

初始化服务器的工作过程包括:服务器配置和中间件初始化。服务器配置包括监听模块中间件的配置和发布模块中间件的配置,其中需要设置的项包括:服务器IP、IP类型(IPv4或者IPv6)、Socket端口设置、以及其中一些中间件的配置选项,比如中间件缓冲区大小等。在修改完成服务器配置后,启动服务器进程进行中间件初始化。中间件的初始化主要是根据配置文件中的Socket端口向操作系统申请相应的端口号,以及分配中间件的缓冲区,如果申请端口号失败,则服务器启动失败,如果成功,则完成服务器初始化。

缓冲区模块的申请和设置包括缓冲区的申请和配置,缓冲区的实现方式有多种,比如共享内存、管道等,不管选用哪种实现方式均需要进行申请和配置两步。本实施例以管道作为缓冲区,首先申请缓冲区,即初始化匿名管道,如果失败,退出服务器进程,如果成功,进行申请的缓冲区配置;配置缓冲区主要是对缓冲区的读写权限进行配置,在监听模块中间件监接收到数据之后,只能有一个线程能往缓冲区写入数据,此时可以用信号量等方式进行控制写操作,读权限针对发布模块中间件,如果缓冲区不为空,发布模块中间件读取其中数据。

监听模块中间件工作过程包括初始化、监听以及写往缓冲区三步。初始化过程包括监听模块中间件的Topic设置,如果有多种Topic,则需监听多种数据;监听过程是监听模块中间件的主要工作过程,在监听模块中间件启动之后,一直处于监听状态,如果收到数据,则写往缓冲区,如果没有数据到达,则继续监听;写缓冲区是监听模块中间件在接收到数据之后的工作过程,如果有多个Topic,为了防止多个数据同时到达的情形,需要对缓冲区进行写保护操作。

发布模块中间件工作过程包括初始化、查询缓冲区和发布数据三步。初始化过程包括发布模块中间件的Topic设置、发布数据的属性设置,如发布数据的生存周期等,如果有多种Topic,则需对不同的Topic进行不同的属性设置;查询缓冲区是发布模块中间件的主要工作过程,在发布模块中间件启动后,一直对缓冲区进行查询操作,一旦发现缓冲区不为空,读取缓冲区中数据,并进行数据发布。

服务器在整个DDS通信中一直处于工作状态,只有在出错或者人为停止时才会退出。在没有接收到数据时,监听模块中间件一直处于监听状态,发布模块中间件处于查询缓冲区状态。

在服务器工作过程中,数据发布者可以动态加入,只要数据发布者的发布的数据Topic在服务器能接收的范围内即可,此时只需对服务器发布者配置加以修改即可;同时订阅者也可以动态加入,只要服务器发布配置中存在该订阅者的地址(广播或者P2P能到达)。

本发明解决了P2P模式下DDS通信系统的安全隐患和灵活性差的缺点,目前可以适用于多种领域。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明构思的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1