• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 19
    • 下载费用:30 金币  

    重庆时时彩遗漏怎么看: 一种消息发送、接收处理的方法及其装置.pdf

    关 键 词:
    一种 消息 发送 接收 处理 方法 及其 装置
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201110070754.0

    申请日:

    2011.03.23

    公开号:

    CN102195895A

    公开日:

    2011.09.21

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||公开
    IPC分类号: H04L12/58; G06F17/30 主分类号: H04L12/58
    申请人: 中兴通讯股份有限公司
    发明人: 翁建钢; 闫新成; 张佰林
    地址: 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部
    优先权:
    专利代理机构: 北京同达信恒知识产权代理有限公司 11291 代理人: 郭润湘
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201110070754.0

    授权公告号:

    102195895B|||

    法律状态公告日:

    2014.12.17|||2011.09.21

    法律状态类型:

    授权|||公开

    摘要

    本发明公开了一种消息发送、接收处理方法及其装置,以实现基于不同软件版本的通信节点之间能够实现消息兼容,从而确保分布式系统中基于不同软件版本的通信节点之间能够正确的传递消息。接收方法包括:从接收到的消息中提取第一消息字典,所述第一消息字典用于描述所述消息的结构体信息;从本地存储的消息字典库中获取与所述消息对应的第二消息字典,所述第二消息字典用于描述所述消息的结构体信息;比较所述第一消息字典和第二消息字典的版本,根据比较结果从所述消息中提取应用信息。采用本发明技术方案,实现了基于不同软件版本的通信节点之间能够实现消息兼容,确保了分布式系统中基于不同软件版本的通信节点之间能够正确的传递消息。

    权利要求书

    1.一种消息发送处理方法,应用于分布式系统,其特征在于,包括:从本地存储的消息字典库中查找与待发送消息对应的消息字典,所述消息字典用于描述所述待发送消息的结构体信息;将所述待发送消息对应的消息字典设置在所述待发送消息中,并发送所述待发送消息。2.如权利要求1所述的方法,其特征在于,还包括:生成所述待发送消息对应的消息字典,所述消息字典为用于描述所述待发送消息的结构体信息的数据结构,且包括至少一个用于描述字段信息的子节点。3.如权利要求2所述的方法,其特征在于,所述生成所述待发送消息对应的消息字典,包括:提取所述待发送消息的消息结构体的全局符号表信息,并根据所述全局符号表信息生成全局符号表调试信息;根据所述全局符号表调试信息生成至少一个用于描述所述消息结构体的字段信息的子节点;根据所述至少一个用于描述所述消息结构体的字段信息的子节点和所述待发送消息的应用登记信息,生成与所述待发送消息对应的消息字典,所述应用登记信息包括所述待发送消息的标识信息、名称和所述消息结构体的头文件路径。4.一种消息接收处理方法,应用于分布式系统,其特征在于,包括:接收消息,并从所述消息中提取第一消息字典,所述第一消息字典用于描述所述消息的结构体信息;从本地存储的消息字典库中获取与所述消息对应的第二消息字典,所述第二消息字典用于描述所述消息的结构体信息;比较所述第一消息字典和第二消息字典的版本,根据比较结果从所述消息中提取应用信息。5.如权利要求4所述的方法,其特征在于,所述根据比较结果从所述消息中提取应用信息,包括:当所述第一消息字典的版本与所述第二消息字典的版本一致时,从所述消息中提取应用数据净荷;当所述第一消息字典的版本与所述第二消息字典的版本不一致时,根据较低版本的所述第一消息字典或所述第二消息字典从所述消息中提取应用信息。6.如权利要求5所述的方法,其特征在于,所述第一消息字典和所述第二消息字典均为用于描述消息的结构体信息的数据结构,且分别包括至少一个用于描述字段信息的子节点;根据所述第一消息字典或所述第二消息字典从所述消息中提取应用信息,包括:针对所述第一消息字典或所述第二消息字典中的每个待解析子节点,判断该待解析子节点与所述第二消息字典或第一消息字典中相应子节点是否一致,若一致,则从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;若不一致,则根据所述待解析子节点的类型从所述消息中提取相应的应用信息。7.如权利要求6所述的方法,其特征在于,所述根据所述待解析子节点的类型从所述消息中提取相应的应用信息,包括:当所述待解析子节点为原始类型子节点或原始类型数组型子节点时,根据所述第一消息字典或第二消息字典中记录的所述待解析子节点的长度,从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;当所述待解析子节点为结构体类型子节点时,根据所述第一消息字典或第二消息字典中记录的所述待解析子节点的长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用;当所述待解析子节点为结构体数组类型子节点时,根据所述第一消息字典或第二消息字典中记录的所述待解析子节点的数组长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用。8.一种消息发送处理装置,其特征在于,包括:消息字典获取单元,用于从本地存储的消息字典库中查找与待发送消息对应的消息字典,所述消息字典用于描述所述待发送消息的结构体信息;消息发送单元,用于将所述消息字典获取单元获取的所述消息字典设置在所述待发送消息中,并发送所述待发送消息。9.一种消息接收处理装置,其特征在于,包括:消息字典提取单元,用于接收消息,并从所述消息中提取第一消息字典,所述第一消息字典用于描述所述消息的结构体信息;消息字典获取单元,用于从本地存储的消息字典库中获取与所述消息对应的第二消息字典,所述第二消息字典用于描述所述消息的结构体信息;消息处理单元,用于比较所述消息字典提取单元提取得到的第一消息字典与所述消息字典获取单元获取的第二消息字典的版本,并根据比较结果从所述消息中提取应用信息。10.如权利要求9所述的装置,其特征在于,所述消息处理单元,具体用于:当所述第一消息字典的版本与所述第二消息字典的版本一致时,从所述消息中提取应用数据净荷;当所述第一消息字典的版本与所述第二消息字典的版本不一致时,根据较低版本的所述第一消息字典或所述第二消息字典从所述消息中提取应用信息。11.如权利要求10所述的装置,其特征在于,所述第一消息字典和所述第二消息字典均为用于描述消息的结构体信息的数据结构,且分别包括至少一个用于描述字段信息的子节点;消息处理单元根据所述第一消息字典或所述第二消息字典从所述消息中提取应用信息,具体用于:针对所述第一消息字典或所述第二消息字典中的每个待解析子节点,判断该待解析子节点与所述第二消息字典或第一消息字典中相应子节点是否一致,若一致,则从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;若不一致,则根据所述待解析子节点的类型从所述消息中提取相应的应用信息。12.如权利要求11所述的装置,其特征在于,所述消息处理单元根据所述待解析子节点的类型从所述消息中提取相应的应用信息,具体用于:当所述待解析子节点为原始类型子节点或原始类型数组型子节点时,根据所述第一消息字典或第二消息字典中记录的所述待解析子节点的长度,从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;当所述待解析子节点为结构体类型子节点时,根据所述第一消息字典或第二消息字典中记录的所述待解析子节点的长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用;当所述待解析子节点为结构体数组类型子节点时,根据所述第一消息字典或第二消息字典中记录的所述待解析子节点的数组长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用。13.一种分布式系统中的通信节点,其特征在于,包括如权利要求8所述的消息发送处理装置,和/或如权利要求9~12任一项所述的消息接收处理装置。

    说明书

    一种消息发送、接收处理的方法及其装置

    技术领域

    本发明涉及通信领域,尤其涉及一种消息发送处理方法及其装置、一种消息接收处理方法及其装置。

    背景技术

    目前,随着通信业务的快速发展,通信业务种类和用户数量等都呈现出爆炸式增长的发展趋势,随之而来的是需要传递处理海量的信息,这对通信设备的业务能力带来较大的挑战;为处理海量的信息,目前将通信设备的内部架构调整为更科学的分布式处理模型,分布式系统中各通信节点之间分工合作、流水化作业,从而使通信设备的整体性能得到最大限度的利用。

    随着分布式系统中通信设备内部的通信节点数变得越来越多,各通信节点的分工更趋细化;在运作过程中,分布系统中的通信节点间需要经常交流种类繁多的内部控制信息,为简化上层应用的通信节点间通信,通常都会对操作系统提供的跨CPU(中央处理器)通信接口(如socket接口)进行封装,以实现按消息ID分发的消息通信方式;采用该种通信方式,应用只需要关心消息ID和消息内容本身接口,无需关心底层的socket创建、维护等过程,此通信方式简称“按消息结构通信”。根据软件集成化的基本要求,分布式系统中的各通信节点间使用统一的软件平台,因此分布式系统中的各通信节点间的通信(即CPU之间的通信)与通信节点内部不同进程间通信(即CPU内部通信)一样,收发两端只需要定义一个消息结构体和消息ID,即可实现CPU之间的通信。

    随着新功能的加入,已有消息结构体不能满足日益增长的需求,当分布式系统中的部分通信节点使用新功能时,需要对已有的公用消息结构体进行修改,因此,为保证分布系统中的各通信节点间能够正常使用该公用消息结构体,对分布系统中的所有通信节点的软件版本进行升级。这种确保分布式系统中的各通信节点间能够正常使用公共消息结构体的方式,虽然具有一定的效力,但是一般情况下分布式系统中的通信节点的数量繁多,若对每个通信节点的软件版本进行升级将带来较大的工作量,甚至可能会带来不必要的工程风险。

    发明内容

    针对现有技术存在的上述技术问题,本发明实施例提供一种消息发送、接收方法及其装置,以提供一种新的消息兼容机制,使得基于不同软件版本的通信节点之间能够实现消息兼容,从而确保分布式系统中基于不同软件版本的通信节点之间能够正确的传递消息。

    一种消息发送处理方法,应用于分布式系统,包括:

    从本地存储的消息字典库中查找与待发送消息对应的消息字典,所述消息字典用于描述所述待发送消息的结构体信息;

    将所述待发送消息对应的消息字典设置在所述待发送消息中,并发送所述待发送消息。

    相应地,还提供一种消息发送处理装置,包括:

    消息字典获取单元,用于从本地存储的消息字典库中查找与待发送消息对应的消息字典,所述消息字典用于描述所述待发送消息的结构体信息;

    消息发送单元,用于将所述消息字典获取单元获取的所述消息字典设置在所述待发送消息中,并发送所述待发送消息。

    一种消息接收处理方法,应用于分布式系统,包括:

    接收消息,并从所述消息中提取第一消息字典,所述第一消息字典用于描述所述消息的结构体信息;

    从本地存储的消息字典库中获取与所述消息对应的第二消息字典,所述第二消息字典用于描述所述消息的结构体信息;

    比较所述第一消息字典和第二消息字典的版本,根据比较结果从所述消息中提取应用信息。

    相应地,本发明实施例还提供一种消息接收处理装置,包括:

    消息字典提取单元,用于接收消息,并从所述消息中提取第一消息字典,所述第一消息字典用于描述所述消息的结构体信息;

    消息字典获取单元,用于从本地存储的消息字典库中获取与所述消息对应的第二消息字典,所述第二消息字典用于描述所述消息的结构体信息;

    消息处理单元,用于比较所述消息字典提取单元提取得到的第一消息字典与所述消息字典获取单元获取的第二消息字典的版本,并根据比较结果从所述消息中提取应用信息。

    一种分布式系统中的通信节点,包括:前述消息发送处理装置,和/或前述消息接收处理装置。

    本发明实施例中,在接收到消息时,从该消息中提取用于描述所述消息的结构体信息的第一消息字典,并从本地存储的消息字典库中获取用于描述所述消息的结构体信息的第二消息字典,再比较所述第一消息字典和第二消息字典的版本,根据比较结果从所述消息中提取应用信息。采用本发明技术方案,在消息中携带有用于描述该消息的结构体信息的消息字典,并且接收端在接收到该消息时,将消息中携带的消息字典与本地存储的与该消息对应的消息字典的版本进行比较,根据比较结果从消息中提取相应的应用信息,从而实现了基于不同软件版本的通信节点之间能够实现消息兼容,从确保分布式系统中基于不同软件版本的通信节点之间能够正确的传递消息。

    附图说明

    图1为本发明实施例中消息发送处理的方法流程图;

    图2为本发明实施例中消息接收处理的方法流程图;

    图3为本发明实施例中生成消息字典的方法流程图;

    图4为本发明实施例中分布式系统中通信节点具体进行消息发送处理的方法流程图;

    图5为本发明实施例中分布式系统中通信节点具体进行消息接收处理的具体方法流程图;

    图6为本发明实施例中消息发送处理装置的结构示意图;

    图7为本发明实施例中消息接收处理装置的结构示意图。

    具体实施方式

    针对现有技术存在的上述技术问题,本发明实施例提供一种消息发送、接收处理的方法及其装置,以提供一种新的消息兼容机制,使得基于不同软件版本的通信节点之间能够实现消息兼容,从确保分布式系统中基于不同软件版本的通信节点之间能够正确的传递消息。消息发送处理方法可包括:从本地存储的消息字典库中查找与待发送消息对应的消息字典,所述消息字典用于描述所述待发送消息的结构体信息;将所述待发送消息对应的消息字典设置在所述待发送消息中,并发送所述待发送消息。消息接收处理方法可包括:在接收到消息时,从该消息中提取用于描述所述消息的结构体信息的第一消息字典,并从本地存储的消息字典库中获取用于描述所述消息的结构体信息的第二消息字典,再比较所述第一消息字典和第二消息字典的版本,根据比较结果从所述消息中提取应用信息。

    下面结合说明书附图对本发明技术方案进行详细的描述。

    参见图1,为本发明实施例中消息发送处理的方法流程图,该方法应用于分布式系统,以通信节点A发送消息为例,包括:

    步骤101、通信节点A从本地存储的消息字典库中查找与待发送消息对应的消息字典,所述消息字典用于描述所述待发送消息的结构体信息。

    步骤102、通信节点A将所述待发送消息对应的消息字典设置在所述待发送消息中,并发送所述待发送消息。

    该步骤中,通信节点A将步骤101中获取的消息字典设置在所述待发送消息的头部。

    较佳地,上述流程的步骤101之前还可包括步骤:

    通信节点A生成所述待发送消息对应的消息字典,所述消息字典为用于描述所述待发送消息的结构体信息的数据结构,且包括至少一个用于描述字段信息的子节点。

    通信节点A生成所述待发送消息对应的消息字典,可采用以下方式:

    提取所述待发送消息的消息结构体的全局符号表信息,并根据所述全局符号表信息生成全局符号表调试信息;

    根据所述全局符号表调试信息生成至少一个用于描述所述消息结构体的字段信息的子节点;

    根据所述至少一个用于描述所述消息结构体的字段信息的子节点和所述待发送消息的应用登记信息,生成与所述待发送消息对应的消息字典,所述应用登记信息包括所述待发送消息的标识信息(如ID号)、名称和所述消息结构体的头文件路径。

    参见图2,为本发明实施例中消息接收处理的方法流程图,该方法以通信节点A接收通信节点B发送的消息为例进行说明,该方法包括:

    步骤201、通信节点A接收通信节点B发送的消息,并从所述消息中提取第一消息字典,所述第一消息字典用于描述所述消息的结构体信息。

    步骤202、通信节点A从本地存储的消息字典库中获取与所述消息对应的第二消息字典,所述第二消息字典用于描述所述消息的结构体信息。

    步骤203、通信节点A比较所述第一消息字典和第二消息字典的版本,根据比较结果从所述消息中提取应用信息。

    上述流程步骤203中,通信节点A根据比较结果从所述消息中提取信息,包括:当所述第一消息字典的版本与所述第二消息字典的版本一致时,通信节点A从所述消息中提取应用数据净荷;当所述第一消息字典的版本与所述第二消息字典的版本不一致时,根据较低版本的所述第一消息字典或所述第二消息字典从所述消息中提取应用信息,如:当所述第一消息字典的版本低于所述第二消息字典的版本时,通信节点A根据所述第一消息字典从所述消息中提取应用信息;当所述第一消息字典的版本高于所述第二消息字典的版本时,通信节点A根据所述第二消息字典从所述消息中提取应用信息。

    较佳地,为进一步提高通信节点对接收到的消息进行解析,本发明实施例中,所述第一消息字典和所述第二消息字典均可以设置为用于描述消息的结构体信息的数据结构,且该数据结构包括至少一个用于描述字段信息的子节点。如消息字典由多个子节点构成树状数据结构。消息字典中可包括以下一类或多类子节点:原始类型子节点、原始数组类型子节点、结构体类型子节点和结构体数组型子节点,其中:内存中连续的原始类型成员字段构成的独立子节点为原始类型子节点,原始类型可包括char、unsigned?char、short、unsigned?short、int、unsigned?int、long、unsigned?long、float、double、enum、union等;原始类型成员字段的数组构成的独立子节点为原始数组类型子节点;自定义的结构体类型成员字段构成的独立子节点为结构体类型子节点;结构体数组成员字段构成的独立子节点为结构体数组型子节点。

    针对原始类型子节点,应用可按照以下尾部追加字段原则对子节点内部信息进行修改:一个原始类型子节点生成之后,后续修改将只能在原始类型子节点尾部新增原始数据类型字段,而禁止对原始类型子节点的已有字段进行删除、修改类型或插入新字段等操作。针对原始数组类型子节点,应用可以增加原始数组类型子节点的数组长度,但是禁止缩小原始数组类型子节点的数组长度。

    针对结构体类型子节点和结构体数组类型子节点,应用可对结构体字段本身进行修改,因此需要对结构体类型子节点和结构体数组类型子节点的描述信息进行扩展:将结构体类型子节点和结构体数组类型子节点的内存描述信息作为下一级子节点信息填入消息字典中,依此原则递归计算,直到最末层节点的子节点全部是原始类型子节点或者原始数组类型子节点。针对结构体类型子节点,应用在结构体类型子节点的下级的原始类型子节点末端按照尾部追加字段原则进行修改;针对结构体属组类型子节点,应用既可以修改数组长度,同时也可以在结构体属组类型子节点的下级的原始类型子节点末端按照尾部追加字段原则进行修改。

    上述步骤203中,根据所述第一消息字典从所述消息中提取应用信息,具体可包括:针对所述第一消息字典中的每个待解析子节点,判断该待解析子节点与所述第二消息字典中相应子节点是否一致,若一致,则从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;若不一致,则根据所述待解析子节点的类型从所述消息中提取相应的应用信息。根据所述待解析子节点的类型从所述消息中提取相应的应用信息,可如下:当所述待解析子节点为原始类型子节点或原始类型数组型子节点时,根据所述第一消息字典中记录的所述待解析子节点的长度,从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;当所述待解析子节点为结构体类型子节点时,根据所述第一消息字典中记录的所述待解析子节点的长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用;当所述待解析子节点为结构体数组类型子节点时,根据所述第一消息字典中记录的所述待解析子节点的数组长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用。

    上述步骤203中,根据所述第二消息字典从所述消息中提取应用信息,具体可包括:针对所述第二消息字典中的每个待解析子节点,判断该待解析子节点与所述第一消息字典中相应子节点是否一致,若一致,则从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;若不一致,则根据所述待解析子节点的类型从所述消息中提取相应的应用信息。根据所述待解析子节点的类型从所述消息中提取相应的应用信息,包括:当所述待解析子节点为原始类型子节点或原始类型数组型子节点时,根据所述第二消息字典中记录的所述待解析子节点的长度,从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;当所述待解析子节点为结构体类型子节点时,根据所述第二消息字典中记录的所述待解析子节点的长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用;当所述待解析子节点为结构体数组类型子节点时,根据所述第二消息字典中记录的所述待解析子节点的数组长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用。

    较佳地,上述流程的任意步骤之前或之后,还可包括:

    通信节点A在确定需要发送消息时,从本地存储的消息字典库中查找与待发送消息对应的消息字典;通信节点A在所述消息字典库中查找到与所述待发送消息对应的消息字典时,将查找的消息字典设置在所述待发送消息中,并通过消息发送接口发送;以及,通信节点A在所述消息字典库中不能查找到与所述待发送消息对应的消息字典时,通过消息发送接口发送所述待发送消息。

    本发明实施例中,消息字典库中存储消息ID号与消息字典的对应关系,当需要从消息字典库中查找相应消息的对应的消息字典时,提取该消息的ID号,并从消息字典库中的对应关系中获取与提取的ID号对应的消息字典。

    本发明实施例中,生成消息字典,可采用如图3所示的流程实现。

    参见图3,为本发明实施例中生成消息字典的方法流程图,该方法包括:

    步骤301、将需要进行消息兼容处理的消息的消息结构体的应用登记信息记录到指定的源文件StructReg.c中,并对该源文件StructReg.c进行编译得到编译文件StructReg.o。

    本发明实施例中,将分布式系统中在不同单板间传输的消息确定为需要进行消息兼容处理的消息。该步骤301中,需要进行消息兼容的消息结构体的相关信息,可包括:消息结构体定义的头文件路径、消息ID号和消息结构体本体。

    步骤302、对所述编译文件StructReg.o进行解析,从中提取各消息结构体各自对应的全局符号表信息,并对提取的各消息结构体对应的全局符号表信息分别进行整理得到各消息结构体对应的全局符号表调试信息,得到数据文件StructReg.dat。

    步骤303、对所述数据文件StructReg.dat中的各消息结构体对应的全局符号表调试信息进行整理,得到各消息对应的可用结构体描述信息。

    步骤304、根据StructReg.dat中各消息对应的可用结构体描述信息,生成消息描述字典库源文件MsgMap.c,该字典库源文件MsgMap.c中包含各消息分别对应的消息字典,各消息字典中包括相应的用于描述相应结构体的字段信息的子节点。

    本发明实施例中,消息字典包括至少一个子节点,子节点为用于描述消息结构体字段内存分布的数据结构;在定义子节点时,可定义子节点类型、子节点的下一个兄弟子节点的ID号、该子节点所包含的子节点数和子节点所占用的内存大小等,具体可定义如下:

    由于对消息结构体的调试信息进行了压缩整合,一个消息结构体所需要的字典信息长度较短,如struct?tag_syn_hdr消息结构体的描述信息仅需要两个子节点就即可描述清楚,可采用原始类型子节点和结构体数组类型子节点进行描述,具体可如下:

    步骤305、将消息ID及其对应的消息字典关联写入字典库源文件MsgMap.c的消息字典登记表中。

    步骤306、对所述字典库源文件MsgMap.c进行编译,得到二进制目标文件MsgMap.o,再将该二进制目标文件MsgMap.o与已有的目标文件TmpProject.o进行链接,生成最终的二进制目标文件Project.o。

    参见图4,为本发明实施例中分布式系统中通信节点具体进行消息发送处理的方法流程图,该方法包括:

    步骤401、接收消息发送请求,该消息发送请求中携带有待发送消息的ID号。

    步骤402、从本地存储的消息字典库的消息字典登记表中,查找是否存在与待发送消息的ID号对应的消息字典登记表条目,若有则执行步骤403,否则执行步骤405。

    步骤403、根据查找到的消息字典登记表条目,从消息字典库中获取与所述ID号对应的消息字典,并将该消息字典设置在所述待发送消息中。

    该步骤中,可将消息字典设置在待发送消息的头部。

    步骤404、调用普通的消息发送接口输出设置有消息字典的所述待发送消息。

    步骤405、调用普通的消息发送接口输出所述待发送消息。

    较佳地,上述消息发送接口设置为消息兼容处理的通用消息发送接口,发送消息的格式可如下:MsgSendEx(MsgID,MsgBuf,……)。

    参见图5,为本发明实施例中分布式系统中通信节点进行消息接收处理的方法流程图,该方法以通信节点B接收通信节点A发送的消息为例进行说明,方法包括:

    步骤500、通信节点B接收通信节点B发送的消息。

    步骤501、通信节点B从接收到的消息中提取与该消息对应的消息字典A,并根据所述消息的ID号从本地存储的消息字典库中获取与所述消息的ID号对应的消息字典B。

    该步骤中,通信节点B先从本地存储的消息字典库的消息字典登记表中,获取与所述消息的ID号对应的消息字典登记表条目,并根据该消息字典登记表条目从消息字典库中获取与所述ID号对应的消息字典B。

    步骤502、通信节点B将本地消息缓存清零,以便存储此次对接收到的所述消息进行处理得到的应用信息。

    步骤503、通信节点B判断所述消息字典A的版本与所述消息字典B的版本是否一致,若一致则执行步骤504,否则执行步骤505。

    步骤504、通信节点B直接从所述消息中提取应用数据净荷,并将提取的应用数据净荷存储至所述本地消息缓存中,并执行步骤522。

    步骤505、通信节点B判断所述消息字典A的版本是否低于所述消息字典B的版本,若是则执行步骤506,否则执行步骤514。

    步骤506、判断通信节点B是否已经遍历完所述消息字典A中的所有子节点,若否则执行步骤507,否则执行步骤522。

    步骤507、判断当前遍历子节点与消息字典B中与该当前遍历子节点相应的子节点是否一致,若一致则执行步骤508,否则执行步骤509。

    步骤508、通信节点B根据当前遍历子节点的信息,从所述消息的消息净荷中与所述当前遍历子节点对应位置提取相应的应用信息,并将该应用信息存储至所述本地消息缓存中,并执行步骤506。

    步骤509、通信节点B判断所述当前遍历子节点是否为结构体类型子节点或结构体数组类型子节点,若否则执行步骤510,否则执行步骤511。

    步骤510、通信节点B确定所述当前遍历子节点为原始类型子节点或原始类型数组子节点,按照所述消息字典A中记录的所述当前遍历子节点的长度,从所述消息的消息净荷中与所述当前遍历子节点对应的位置提取相应的应用信息,并将该应用信息存储至所述本地消息缓存中,并执行步骤506。

    较佳地,本发明实施例中,针对原始类型子节点和原始数组类型子节点的修改为尾部新增字段,因此,高版本消息字典B中的原始类型子节点或原始数组类型子节点与低版本消息字典A中相应原始类型子节点和原始数组类型子节点相比,至多就是在子节点尾部新增了字段;因此,通信节点B在根据消息字典A从消息中提取相应的应用信息时,对剩余的字段部分统一填写默认值0。

    步骤511、通信节点B判断所述当前遍历子节点是否为结构体类型子节点,若是则执行步骤512,否则执行步骤513。

    步骤512、通信节点B根据所述消息字典A中记录的所述当前遍历子节点的长度,对所述当前遍历子节点及其对应的消息部分进行消息兼容处理的递归调用,并执行步骤506。

    步骤513、通信节点B根据所述消息字典A中记录的所述当前遍历子节点的数组长度,对所述当前遍历子节点及其对应的消息部分进行消息兼容处理的递归调用,并对剩余的字段部分同一填写默认值0,并执行步骤506。

    步骤514、通信节点B是否已经遍历完所述消息字典B中的所有子节点,若是则执行步骤522,否则执行步骤515。

    步骤515、判断当前遍历子节点与消息字典A中与该当前遍历子节点相应的子节点是否一致,若一致则执行步骤516,否则执行步骤517。

    步骤516、通信节点B根据所述当前遍历子节点的信息,从所述消息的消息净荷中与所述当前遍历子节点对应位置提取相应的应用信息,并将该应用信息存储至本地消息缓存中,并执行步骤522。

    步骤517、通信节点B判断所述当前遍历子节点是否为结构体类型子节点或结构体数组类型子节点,若否则执行步骤518,否则执行步骤519。

    步骤518、通信节点B确定所述当前遍历的子节点为原始类型子节点或原始类型数组子节点,按照所述消息字典B中记录的所述当前遍历子节点的长度,从所述消息的消息净荷中与所述当前遍历子节点对应的位置提取相应的应用信息,并将该应用信息存储至本地消息缓存中,并对剩余的字段部分同一填写默认值0,并执行步骤514。

    步骤519、通信节点B判断所述当前遍历的子节点是否为结构体类型子节点,若是则执行步骤520,否则执行步骤521。

    步骤520、通信节点B根据所述消息字典B中记录的所述当前遍历子节点的长度,对所述当前遍历子节点及其对应的消息部分进行消息兼容处理的递归调用,并执行步骤514。

    步骤521、通信节点B根据所述消息字典B中记录的所述当前遍历子节点的数组长度,对所述当前遍历子节点及其对应的消息部分进行消息兼容处理的递归调用,并对剩余的字段部分统一填写默认值0,并执行步骤514。

    步骤522、通信节点B将本地消息缓存中缓存的应用信息进行整理后,发送给上层应用,并结束流程。

    基于前述方法的相同构思,本发明实施例还提供一种消息发送处理装置和一种消息接收处理装置。

    参见图6,为本发明实施例中消息发送处理装置的结构示意图,该装置包括:

    消息字典获取单元61,用于从本地存储的消息字典库中查找与待发送消息对应的消息字典,所述消息字典用于描述所述待发送消息的结构体信息;

    消息发送单元62,用于将所述消息字典获取单元61获取的所述消息字典设置在所述待发送消息中,并发送所述待发送消息。

    参见图7,为本发明实施例中消息接收处理装置的结构示意图,该装置包括:

    消息字典提取单元71,用于接收消息,并从所述消息中提取第一消息字典,所述第一消息字典用于描述所述消息的结构体信息。

    消息字典获取单元72,用于从本地存储的消息字典库中获取与所述消息对应的第二消息字典,所述第二消息字典用于描述所述消息的结构体信息。

    消息处理单元73,用于比较所述消息字典获取单元72提取得到的第一消息字典与消息字典提取单元71获取的第二消息字典的版本,并根据比较结果从所述消息中提取应用信息。

    较佳地,消息处理单元73,具体用于:

    当所述第一消息字典的版本与所述第二消息字典的版本一致时,从所述消息中提取应用数据净荷;

    当所述第一消息字典的版本与所述第二消息字典的版本不一致时,根据较低版本的所述第一消息字典或所述第二消息字典从所述消息中提取应用信息,如:当所述第一消息字典的版本低于所述第二消息字典的版本时,根据所述第一消息字典从所述消息中提取应用信息;当所述第一消息字典的版本高于所述第二消息字典的版本时,根据所述第二消息字典从所述消息中提取应用信息。

    较佳地,所述第一消息字典为用于描述消息的结构体信息的数据结构,且包括至少一个用于描述字段信息的子节点;消息处理单元73根据所述第一消息字典从所述消息中提取应用信息,具体用于:针对所述第一消息字典中的每个待解析子节点,判断该待解析子节点与所述第二消息字典中相应子节点是否一致,若一致,则从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;若不一致,则根据所述待解析子节点的类型从所述消息中提取相应的应用信息。

    较佳地,消息处理单元73根据所述待解析子节点的类型从所述消息中提取相应的应用信息,包括:当所述待解析子节点为原始类型子节点或原始类型数组型子节点时,根据所述第一消息字典中记录的所述待解析子节点的长度,从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;当所述待解析子节点为结构体类型子节点时,根据所述第一消息字典中记录的所述待解析子节点的长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用;当所述待解析子节点为结构体数组类型子节点时,根据所述第一消息字典中记录的所述待解析子节点的数组长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用。

    较佳地,所述第二消息字典为用于描述消息的结构体信息的数据结构,且包括至少一个用于描述字段信息的子节点;消息处理单元73根据所述第二消息字典从所述消息中提取应用信息,包括:针对所述第二消息字典中的每个待解析子节点,判断该待解析子节点与所述第一消息字典中相应子节点是否一致,若一致,则从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;若不一致,则根据所述待解析子节点的类型从所述消息中提取相应的应用信息。

    较佳地,消息处理单元73根据所述待解析子节点的类型从所述消息中提取相应的应用信息,具体用于:当所述待解析子节点为原始类型子节点或原始类型数组型子节点时,根据所述第二消息字典中记录的所述待解析子节点的长度,从所述消息的消息净荷中与所述待解析子节点对应的位置提取相应的应用信息;当所述待解析子节点为结构体类型子节点时,根据所述第二消息字典中记录的所述待解析子节点的长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用;当所述待解析子节点为结构体数组类型子节点时,根据所述第二消息字典中记录的所述待解析子节点的数组长度,对所述待解析子节点及其对应的消息部分进行消息兼容处理的递归调用。

    本发明实施例还提供一种分布式系统中的通信节点,该通信节点可包括图6所示的消息发送处理装置,和/或,包括前述消息接收处理装置。

    采用本发明技术方案,在消息中携带有用于描述该消息的结构体信息的消息字典,并且接收端在接收到该消息时,将消息中携带的消息字典与本地存储的与该消息对应的消息字典的版本进行比较,根据比较结果从消息中提取相应的应用信息,从而实现了基于不同软件版本的通信节点之间能够实现消息兼容,从确保分布式系统中基于不同软件版本的通信节点之间能够正确的传递消息。

    显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

    关于本文
    本文标题:一种消息发送、接收处理的方法及其装置.pdf
    链接地址://www.4mum.com.cn/p-5865421.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 通信基站维修赚钱吗 安徽快3开奖号码查询 时时彩河南十一选五走势图 湖北快3开奖号码 新11选5官方网站 娱乐场所有哪些 麻将牛牛上下分招代理 福彩3第285的组选关 002十二生肖今晚特码 格力微商赚钱吗 股票入门 超级大乐透开奖历史记录 九龙彩票首页 新疆25选7开奖结果近十期 冰球打架规则 捕鱼大师提现被拒绝