消息传输方法、装置、计算机设备和存储介质与流程

文档序号:20945945发布日期:2020-06-02 19:52阅读:219来源:国知局
消息传输方法、装置、计算机设备和存储介质与流程

本申请涉及计算机技术领域,特别是涉及一种消息传输方法、装置、计算机设备和存储介质。



背景技术:

随着计算机技术的发展,出现了即时通讯(instantmessenger,im)技术。利用即时通讯工具实现多个终端之间的消息传输已经成为当前移动通信网络的重要应用之一。用户可以通过终端向服务器发送消息,由服务器路由转发消息至对应的其他终端,从而实现不同用户之间的实时消息通讯。

在终端传输消息至服务器的过程中,终端通常会根据需要传输的消息生成对应的报文,将报文发送至服务器。然而,传统方式中终端所生成的报文结构比较复杂,报文所包含的数据量较大。在传输对应的报文时,数据量较大的报文会耗费终端较多的通信资源,例如,会耗费较多的流量资源,通信成本较高。因此,如何减少终端传输消息所耗费的通信资源,降低通信成本成为目前需要解决的技术问题。



技术实现要素:

基于此,有必要针对上述通信成本较高的技术问题,提供一种能够减少终端传输消息所耗费的通信资源,以此降低通信成本的消息传输方法、装置、计算机设备和存储介质。

一种消息传输方法,所述方法包括:

获取消息传输任务,所述消息传输任务携带消息数据;

基于预设私有协议获取所述消息传输任务对应的特定字段,所述预设私有协议为基于传输控制协议进行优化处理后所得到的应用层协议;

获取所述预设私有协议对应的报文配置信息,所述报文配置信息中包括所述特定字段所对应的报头格式信息;

根据所述报头格式信息对所述特定字段进行优化,得到特定字节数量的特定优化字段;

根据所述特定优化字段生成报文报头,确定所述消息数据作为报文报体,根据所述报文报头和所述报文报体生成消息报文;

将所述消息报文发送至服务器,使得所述服务器基于所述预设私有协议对所述消息报文进行解析,得到所述消息数据。

在其中一个实施例中,所述基于预设私有协议获取所述消息传输任务对应的特定字段包括:

解析所述消息传输任务,得到所述消息传输任务对应的任务类型;

统计所述消息传输任务中携带的所述消息数据,得到所述消息数据对应的消息长度;

获取所述预设私有协议所对应的版本信息,得到包括所述任务类型、消息长度以及版本信息的所述特定字段。

在其中一个实施例中,所述方法还包括:

从所述报文配置信息中读取移位信息,所述移位信息包括移位方向和移动位数;

根据所述移位方向和所述移动位数对所述消息长度进行加密处理,得到所述消息数据对应的目标长度。

在其中一个实施例中,所述报文配置信息还包括报体格式信息,所述确定所述消息数据作为报文报体包括:

获取序列化模型,将所述消息数据输入所述序列化模型中;

调用所述序列化模型根据所述报体格式信息对所述消息数据进行序列化处理,得到目标消息数据;

将所述目标消息数据进行封装,得到所述报文报体。

在其中一个实施例中,所述将所述消息报文发送至服务器,使得所述服务器基于所述预设私有协议对所述消息报文进行解析,得到所述消息数据包括:

获取所述消息报文所对应的报文长度;

当所述报文长度大于阈值时,将所述消息报文进行拆分,得到多个子报文,所述子报文包括对应的子报文标识;

将所述子报文发送至所述服务器,使得所述服务器根据所述子报文标识对接收到的所述子报文进行组合,并解析得到所述消息数据。

在其中一个实施例中,所述方法还包括:

接收所述服务器根据发送的所述子报文返回的响应信息,所述响应信息包括所述服务器接收到的子报文所对应的已接收子报文标识;

根据所述已接收子报文标识判断是否存在所述服务器未接收的子报文所对应的未接收子报文标识;

当存在未接收子报文标识时,将所述未接收子报文标识所对应的子报文重发至所述服务器。

一种消息传输装置,所述装置包括:

传输任务获取模块,用于获取消息传输任务,所述消息传输任务携带消息数据;

特定字段获取模块,用于基于预设私有协议获取所述消息传输任务对应的特定字段,所述预设私有协议为基于传输控制协议进行优化处理后所得到的应用层协议;

配置信息获取模块,用于获取所述预设私有协议对应的报文配置信息,所述报文配置信息包括所述特定字段所对应的报头格式信息;

特定字段优化模块,用于根据所述报头格式信息对所述特定字段进行优化,得到特定字节数量的特定优化字段;

消息报文生成模块,用于根据所述特定优化字段生成报文报头,确定所述消息数据作为报文报体,根据所述报文报头和所述报文报体生成消息报文;

消息报文传输模块,用于将所述消息报文发送至服务器,使得所述服务器基于所述预设私有协议对所述消息报文进行解析,得到所述消息数据。

在其中一个实施例中,所述报文配置信息还包括报体格式信息,所述消息报文生成模块还用于获取序列化模型,将所述消息数据输入所述序列化模型中;调用所述序列化模型根据所述报体格式信息对所述消息数据进行序列化处理,得到目标消息数据;将所述目标消息数据进行封装,得到所述报文报体。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现所述消息传输方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述消息传输方法的步骤。

上述消息传输方法、装置、计算机设备和存储介质,获取到消息传输任务后,基于预设私有协议获取消息传输任务对应的特定字段。根据预设私有协议对应报文配置信息中特定字段所对应的报头格式信息,将对应的特定字段进行优化,得到特定字节数量的特定优化字段。根据特定优化字段和消息传输任务中携带的消息数据生成消息报文并发送至服务器,服务器可以对消息报文进行解析得到消息数据。相较于传统方式,基于预设私有协议对消息传输任务对应的特定字段进行优化,简化了特定字段,根据特定优化字段生成用于传输的消息报文,减少了消息报文的数据量,有效的减少了流量资源等通信资源的消耗,降低了通信成本。

附图说明

图1为一个实施例中消息传输方法的应用场景图;

图2为一个实施例中消息传输方法的流程示意图;

图3为一个实施例中将消息报文发送至服务器,使得服务器基于预设私有协议对消息报文进行解析,得到消息数据的步骤的流程示意图;

图4为一个实施例中消息传输装置的结构框图;

图5为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的消息传输方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。终端102获取消息传输任务,消息传输任务中携带消息数据。终端102基于预设私有协议获取消息传输任务对应的特定字段,预设私有协议是基于传输控制协议进行优化处理后所得到的应用层协议。终端102获取预设私有协议对应的报文配置信息,报文配置信息包括特定字段所对应的报头格式信息,根据报头格式信息对特定字段进行优化,得到特定字节数量的特定优化字段。终端102根据特定优化字段生成报文报头,确定消息数据作为报文报体,根据报文报头和报文报体生成消息报文。终端102将消息报文发送至服务器104,使得服务器104基于预设私有协议对消息报文进行解析,得到终端102发送的消息数据。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种消息传输方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:

步骤202,获取消息传输任务,消息传输任务携带消息数据。

其中,消息传输任务可以用于指示终端将消息传输任务携带的消息数据发送至服务器,消息数据可以是用户之间进行通信的数据。消息数据可以是多种类型的数据,例如,消息数据可以是文本数据,也可以是图像数据,还可以是多种不同类型数据的集合。终端可以在操作系统上安装并运行有即时通讯(instantmessaging,im)应用,即时通讯应用是用于实现多个用户之间即时通讯的应用程序。终端可以通过网络与服务器进行通信,终端与服务器之间可以是c/s(client-server,服务器-客户机)架构,也可以是b/s(browser/serverarchitecture,浏览器和服务器架构)架构。对应的,即时通讯应用可以是客户端应用,也可以是网页应用。

终端可以获取通过即时通讯应用生成的消息传输任务,执行获取到的消息传输任务进行消息传输。具体的,终端可以通过即时通讯应用接收用户输入待传输的消息,用户可以通过与终端相关联的输入设备进行消息输入。即时通讯应用可以响应触发的传输控件生成消息传输任务,传输控件可以是终端输入设备上的实体控件,也可以是展示在终端显示界面中的虚拟控件。终端可以获取即时通讯应用生成的消息传输任务,消息传输任务中携带了用户输入的待传输的消息数据。

步骤204,基于预设私有协议获取消息传输任务对应的特定字段,预设私有协议为基于传输控制协议进行优化处理后所得到的应用层协议。

其中,预设私有协议为用户预先设置的,预设私有协议可以是基于传输控制协议对应用层协议进行优化处理,经过优化处理后得到的针对消息传输业务的应用层协议。预设私有协议用于定义终端与服务器之间相互传递的报文以及传递方式。预设私有协议可以简称为私有协议。例如,优化处理后得到的私有协议可以重新定义多种报文分别对应的报文结构、报文格式等信息。多种报文可以包括登录报文、消息报文、鉴权报文以及验活报文等,多种报文之间的结构可以相同或者不同。相较于传统的应用层协议,优化处理后的私有协议可以简化报文结构,在不丢失数据的前提下减少报文的数据量,从而有效的节省传输报文过程中的流量资源。私有协议可以基于传输控制协议实现终端与服务器之间的通信。传输控制协议可以是多种传输层的通信协议中的一种。例如,传输控制协议可以是tcp(transmissioncontrolprotocol,传输控制协议)协议,也可以是udp(userdatagramprotocol,用户数据报协议)协议。

终端可以基于私有协议获取消息传输任务对应的特定字段。其中,特定字段是指优化处理后的私有协议定义的报文结构所包括的指定字段。具体的,终端可以获取私有协议对应的报文结构信息,报文结构信息包括报头结构信息以及报体结构信息。报头结构信息中记载了生成报文所需的特定字段。终端可以根据私有协议对应的报头结构信息获取消息传输任务对应的特定字段,获取到的特定字段可以包括消息传输任务对应的任务类型、消息数据所对应的消息长度以及私有协议对应的版本信息。

步骤206,获取预设私有协议对应的报文配置信息,报文配置信息包括特定字段所对应的报头格式信息。

不同版本信息的私有协议所对应的报文配置信息可以是完全相同的,也可以是部分不同或者完全不同的。预先设置的私有协议可以包括对应的报文配置信息,并存储在终端以及服务器中。终端可以获取当前用于执行消息传输任务的私有协议所对应的报文配置信息。其中,私有协议对应的报文配置信息记载了对于不同类型的任务所对应报文的配置信息。报文配置信息中可以包括任务类型所对应的报文结构信息以及报文格式信息,报文结构信息可以包括报头结构信息和报体结构信息。对应的,报文格式信息可以包括报头格式信息和报体格式信息。

终端根据私有协议获取到消息传输任务对应的特定字段后,可以从该私有协议对应的报文配置信息中获取特定字段对应的报头格式信息,报头格式信息中包括多个特定字段分别对应的字段格式信息。

步骤208,根据报头格式信息对特定字段进行优化,得到特定字节数量的特定优化字段。

终端可以根据报文配置信息中的报头格式信息对获取到的特定字段进行优化。具体的,终端可以从报头格式信息中读取多个特定字段分别对应的字段格式信息,根据字段格式信息将对应的特定字段进行优化。字段格式信息可以记载对应特定字段所需的数据格式。例如,终端可以根据字段格式信息对特定字段进行优化,将特定字段转换为二进制格式的数据。

字段格式信息中还可以记载有对应特定字段优化后的数据大小。字段格式信息中可以包括对应特定字段优化后所占的字节数量,每个特定字段所占的字节数量可以是固定的。终端根据字段格式信息将对应的特定字段进行优化后,可以得到特定字节数量的特定优化字段。相较于传统方式简化了特定字段所占用的字节数量,有效的减少了消息报文的数据量,降低了终端的通信成本。

在其中一个实施例中,终端获取的特定字段可以包括消息传输任务对应的任务类型、消息数据对应的消息长度以及私有协议对应的版本信息。终端分别根据特定字段各自对应的字段格式信息对特定字段进行优化,得到二进制格式的包括特定字节数量的特定优化字段,优化后的任务类型占用2个字节,优化后的版本信息占用2个字节,优化后的消息长度占用4个字节。终端通过报文格式信息对特定字段进行优化,可以统一特定字段的数据格式,并简化特定字段,得到较少字节数量的特定优化字段,相较于传统报文字段需要占用大量字节,有效的减少了特定字段所包含的数据量。

步骤210,根据特定优化字段生成报文报头,确定消息数据作为报文报体,根据报文报头和报文报体生成消息报文。

终端可以按照报文配置信息中的报头结构信息,将多个优化后的特定优化字段进行拼接,生成报文报头。在其中一个实施例中,报文报头的特定优化字段可以包括且仅包括优化后的任务类型、消息长度和版本信息。终端可以确定消息传输任务中携带的消息数据作为报文报体,按照报文配置信息中的报体结构信息和报体格式信息对消息数据进行封装,得到报文报体。终端将生成的报文报头和报文报体进行组合,生成消息传输任务对应的消息报文。

步骤212,将消息报文发送至服务器,使得服务器基于预设私有协议对消息报文进行解析,得到消息数据。

终端可以通过终端与服务器之间的通信信道将生成的消息报文上传至服务器。其中,终端与服务器之间的通信信道可以是根据私有协议对应的传输层传输控制协议建立连接的。例如,当传输控制协议为tcp协议时,终端可以经过三次握手与服务器之间建立长连接。终端可以执行消息传输任务,将消息报文传输至服务器,使得服务器根据消息报文得到消息数据。具体的,服务器设置有与终端相同的私有协议,服务器可以根据私有协议对消息报文进行解析。服务器可以解析消息报文的报文报头,获取报文报头中的版本信息,根据版本信息确定对应版本的私有协议,通过版本相同的私有协议对消息报文进行解析。服务器可以根据消息长度确定报文报体中真正的消息数据部分,避免消息数据的遗漏,保证消息传输的有效性。服务器根据任务类型响应任务所对应的操作,根据消息传输任务将消息数据进行路由转发,以此实现用户终端之间的通信。

在本实施例中,终端获取到消息传输任务后,根据预设私有协议获取消息传输任务所对应的特定字段,私有协议是进行优化处理之后所得到的应用层协议。终端根据报文配置信息中的报头格式信息对特定字段进行优化,得到特定字节数量的特定优化字段,根据特定优化字段和消息数据生成消息报文。终端将消息报文发送至服务器,使得服务器对消息报文进行解析,得到消息数据。消息报文根据私有协议进行封装,即使消息报文泄露或者被拦截,在没有私有协议的情况下也无法对消息报文进行解析,有效的提高了消息报文中消息数据的安全性。相较于传统应用层协议包括大量字段的报文报头结构,并且每个字段包括大量的数据,本实施例中获取部分特定的字段,简化了报文报头的结构,剔除了不必要的字段,并且对特定字段进行相对应的优化,减少了字段所占的字节,从而减少了生成的消息报文的数据量,有效的减少了终端传输消息报文时所耗费的通信资源,降低了终端的通信成本。

在一个实施例中,基于预设私有协议获取消息传输任务对应的特定字段的步骤包括:解析消息传输任务,得到消息传输任务对应的任务类型;统计消息传输任务中携带的消息数据,得到消息数据对应的消息长度;获取预设私有协议所对应的版本信息,得到包括任务类型、消息长度以及版本信息的特定字段。

终端在获取到消息传输任务后,可以根据私有协议对消息传输任务进行解析,得到消息传输任务对应的任务类型。任务类型可以利用对应的类型标识进行标记。终端可以根据即时通讯应用不同的实际运行需求获取到多种不同类型的任务。多种不同类型的任务可以包括但不限于鉴权任务、连接建立任务、消息传输任务以及心跳包发送任务等。例如,当即时通讯应用在与服务器进行连接时,终端可以根据与服务器的连接需求获取连接建立任务。当终端处于空闲状态时,可以生成心跳包发送任务,以此保证终端与服务器之间的连接。消息传输任务对应的任务类型可以是多个特定字段中的一个。

终端对消息传输任务进行解析后,可以得到消息传输任务携带的消息数据。其中,消息数据可以是用户通过终端输入设备输入的用于通讯的文本数据,文本数据可以是单个字符,也可以是由多个字符组成的字符串。消息数据可以是多种格式的数据。例如,消息数据可以是xml(extensiblemarkuplanguage,可扩展标记语言)的数据,还可以是二进制格式的数据。终端可以统计消息传输任务携带的消息数据,得到消息数据所对应的消息长度。例如,当消息数据为字符串时,终端可以统计字符串中包括的字符数量。当消息数据为二进制格式的数据时,终端可以统计二进制数据的位数,确定消息数据对应的消息长度。

私有协议可以根据实际业务需求进行更新,更新后得到对应版本的私有协议。对私有协议进行多次更新后可以得到对应多个版本的私有协议。终端可以获取执行消息传输任务所对应私有协议的版本信息,版本信息中可以包括用于标记私有协议版本信息的版本标识。终端可以根据私有协议获取消息传输任务对应的多个特定字段,特定字段包括消息传输任务对应的任务类型、消息数据对应的消息长度以及私有协议对应的版本信息。

在本实施例中,终端根据预设私有协议对消息传输任务进行解析,获取包括任务类型、消息长度以及版本信息的特定字段,终端可以根据特定字段生成用于传输的消息报文报头。在传统应用层协议中,报文结构中还包括请求方法、应用名称、统一资源定位符以及连接属性等大量字段。相较于传统报文报头,基于私有协议获取的特定字段只包括部分字段,剔除了不必要的字段,从而有效的减少了消息报文的数据量,节省了在传输消息报文时终端的通信资源。

在一个实施例中,终端将消息数据封装为报文报体之前,还可以对消息数据进行预处理。其中,终端可以采用多种预处理方式中的一种或多种对消息数据进行处理。例如,终端的预处理方式可以对消息数据进行压缩处理,也可以对消息数据进行加密处理,还可以是压缩处理和加密处理的结合。

具体的,终端统计消息数据得到对应的消息长度后,可以将消息数据对应的消息长度与预设值进行比对。预设值可以是用户根据实际需求预先设置的长度值。当消息长度小于或等于预设值时,终端可以直接根据消息数据生成报文报体。当消息长度大于预设值时,终端可以调用预设的压缩算法对消息数据进行压缩,根据数据量较小的压缩后的消息数据生成报文报体。其中,预设的压缩算法可以是多种压缩算法中的一种或多种。例如,终端可以调用的压缩算法可以包括lzw(lempel-ziv-welchencoding,串表压缩算法)算法以及霍夫曼压缩算法等。终端通过压缩算法对消息数据进行压缩,减小了对应报文报体的数据量,从而减少了终端传输消息报文时所耗费的通信资源,降低了终端的通信成本。终端还可以对消息数据进行加密处理。其中,进行加密处理的消息数据可以是压缩后的消息数据,也可以是未压缩的消息数据。终端可以获取多种加密算法对消息数据进行加密,根据加密后的消息数据生成对应的报文报体。例如,终端调用的加密算法可以是ecc(ellipticcurvecryptography,椭圆加密算法)算法,也可以根据aes(advancedencryptionstandard,高级加密标准)标准进行加密,还可以调用多种加密算法的结合对消息数据进行加密。

在本实施例中,终端在根据消息数据生成报文报体之前,可以对消息数据进行预处理。终端通过调用压缩算法对消息数据进行压缩处理,根据压缩后的消息数据生成报文报体,减小了对应报文报体的数据量,从而减少了终端传输消息报文时所耗费的通信资源,降低了终端的通信成本。终端通过调用加密算法对消息数据进行加密处理,根据加密后的消息数据生成报文报体,即使消息报文泄露或者被拦截,也无法对报文报体中的数据进行解密,有效的提高了消息报文中消息数据的安全性。

在一个实施例中,报文配置信息还包括报体格式信息,确定消息数据作为报文报体的步骤包括:获取序列化模型,将消息数据输入序列化模型中;调用序列化模型根据报体格式信息对消息数据进行序列化处理,得到目标消息数据;将目标消息数据进行封装,得到报文报体。

其中,报文配置信息中还包括报体格式信息,报体格式信息中可以包括报文报体中数据的格式类型。例如,报文报体中数据的格式类型可以是二进制数据格式。终端可以根据报体格式信息对获取到的消息数据进行序列化处理。

具体的,终端可以获取序列化模型,将消息数据输入至序列化模型中。序列化模型可以是终端根据数据序列化协议建立并训练得到的数据处理模型。数据序列化协议具体可以是protocolbuffer协议,protocolbuffer协议定义了一种高效的结构化数据交换格式,终端可以根据protocolbuffer协议建立序列化模型。终端可以调用序列化模型对输入的消息数据进行序列化处理,将消息数据转换为报体格式信息对应的二进制格式的目标消息数据。当消息传输任务中携带的消息数据为xml格式的字符串时,终端可以通过序列化模型将字符串转换为二进制格式的数据。终端调用序列化模型对消息数据进行序列化处理后,可以接收序列化模型输出的二进制格式的目标消息数据,并将目标消息数据进行封装,得到消息报文的报文报体。终端将消息报文传输至服务器后,服务器可以解析消息报文得到报文报体,并根据私有协议对应的报体格式信息对报文报体中的目标消息数据进行反序列化处理,以此得到终端上传的消息数据。

在其中一个实施例中,终端对消息数据进行序列化处理后,还可以根据上述实施例中的预处理方式对二进制格式的目标消息数据进行处理。例如,终端可以对二进制格式的目标消息数据进行压缩处理和加密处理,从而进一步的减小对应报文报体的数据量,提高消息数据的安全性。

在其中一个实施例中,终端可以根据报头格式信息对特定字段进行优化,将特定字段转换为二进制格式的特定优化字段。终端可以根据特定优化字段与目标消息数据生成二进制格式的消息报文。

在本实施例中,终端可以获取序列化模型,调用序列化模型根据报体格式信息对消息数据进行序列化处理,得到二进制格式的目标消息数据,并将二进制格式的目标消息数据封装得到报文报体。相较于xml格式的字符串,相同数据内容的二进制格式的目标消息数据对应的数据量更小,传输过程的传输速度更快,减少了终端传输消息报文时所耗费的通信资源。即使在网络环境较差的情况下,较小的消息报文也能减少重传的次数,保证了消息传输的有效性,降低了终端的通信成本。而且,服务器需要根据私有协议对应的报体格式信息才能反序列化还原消息数据,有效的提高了消息数据的安全性。

在一个实施例中,上述消息传输方法还包括:从报文配置信息中读取移位信息,移位信息包括移位方向和移动位数;根据移位方向和移动位数对消息长度进行加密处理,得到消息数据对应的目标长度。

终端统计消息传输任务中携带的消息数据,得到消息数据对应的消息长度之后,可以对得到的消息长度进行加密。其中,消息长度的单位可以根据消息数据的格式变化。例如,当消息数据为字符串时,终端可以读取字符串,确定字符串中所包括的字符个数作为消息数据对应的消息长度。当消息数据转换为二进制格式的目标消息数据时,终端可以确定二进制数据的位数作为消息数据对应的消息长度。终端可以将统计得到的消息长度转换为二进制格式的数据。

私有协议对应的报文配置信息中还包括用于长度加密的移位信息,终端可以从报文配置信息中读取移位信息,并根据移位信息对消息长度进行加密。具体的,报文配置信息中的移位信息包括移位方向和移动位数,移位方向可以包括向左移位和向右移位,用户可以预先设置移位方向和移动位数。终端可以将二进制格式的消息长度数据按照移位方向以及移动位数进行移动处理,得到处理后的二进制数据。终端可以将移动后的二进制数据确定作为消息数据对应的加密后的目标长度。终端将消息报文上传至服务器后,服务器需要对报文报头中的目标长度进行解密后,才能从报文报体中读取对应的真实消息数据。

举例说明,当终端统计得到消息数据对应的消息长度为5时,以消息长度占用一个字节为例,消息长度对应的二进制数据为00000101。终端获取报文配置信息中的移位信息,当用户配置的移位信息包括的移位方向为向左,移动位数为1位时,终端可以按照移位信息对二进制格式的消息长度进行加密处理。加密处理后得到的目标长度为00001010。可以理解的,消息长度通过加密处理由5变为了10。

在本实施例中,终端可以通过报文配置信息中的移位信息对消息长度进行加密,将加密后的目标长度拼接至报文报头中。服务器接收到消息报文后,需要根据私有协议对目标长度进行解密,根据解密后的目标长度从报文报体中读取对应的真实消息数据。若不知道目标长度或者没有对目标长度进行解密,无法根据真实的消息长度读取对应的真实消息数据。即使消息报文泄露或者被拦截,也无法提取报文报体中真实的消息数据,有效的提高了消息数据的安全性。

在一个实施例中,如图3所示,上述将消息报文发送至服务器,使得服务器基于预设私有协议对消息报文进行解析,得到消息数据的步骤包括:

步骤302,获取消息报文所对应的报文长度。

步骤304,当报文长度大于阈值时,将消息报文进行拆分,得到多个子报文,子报文包括对应的子报文标识。

步骤306,将子报文发送至服务器,使得服务器根据子报文标识对接收到的子报文进行组合,并解析得到消息数据。

终端将报文报头和报文报体进行拼接生成消息报文后,还可以获取消息报文所对应的报文长度。具体的,消息报文可以是二进制格式的报文。终端可以通过多种方式获取消息报文所对应的报文长度。例如,终端可以根据消息数据对应的消息长度,以及报文报头中特定字段分别对应的特定字节数量,统计消息报文的报文长度。终端还可以统计消息报文所占的数据大小,根据消息报文的大小确定对应的报文长度。

终端可以将消息报文所对应的报文长度与阈值进行比对。其中,阈值是用户预先根据实际需求设置的长度值。当报文长度小于或等于阈值时,终端可以直接将消息报文通过与服务器之间建立的通信信道上传至服务器,使得服务器对消息报文进行解析得到消息数据。当报文长度大于阈值时,终端可以将消息报文进行拆分,拆分成多个子报文。

在其中一个实施例中,终端还可以在满足其他预设条件时将消息报文进行拆分。例如,当消息报文的大小大于预设大小时,终端可以对消息报文进行拆分。或者当终端与服务器之间的网络传输速度小于预设速度时,也可以对消息报文进行拆分。终端还可以当任务类型为预设目标类型时对消息报文进行拆分。终端可以通过多种方式触发拆分消息报文,提高了消息报文拆分的灵活性。

终端可以通过多种方式将消息报文拆分为多个子报文。例如,终端可以根据预设大小将消息报文拆分为预设大小的子报文,拆分后的最后一个子报文的大小应当小于或等于预设大小。终端还可以将消息报文拆分为预设数量的大小相同的子报文。

在一个实施例中,终端将消息报文拆分成多个子报文后,还可以获取子报文所对应的子报文长度。当子报文长度大于预设长度时,终端可以将多个子报文进行压缩,得到压缩后的子报文。终端可以将压缩后的子报文发送至服务器,进一步减小了传输过程中子报文的数据量,保证了消息传输的有效性,节省了传输消息所需耗费的通信资源,降低了终端的通信成本。

终端可以给子报文分配对应的子报文标识,利用子报文标识对拆分出的子报文进行标记,子报文标识可以用于标记子报文以及子报文的顺序。子报文标识与子报文之间存在唯一对应的映射关系。终端可以利用多种信息作为子报文标识标记子报文。例如,子报文标识可以是子报文对应的顺序编号,也可以是子报文对应的uuid(universallyuniqueidentifier,通用唯一识别码)。终端可以将拆分出的子报文发送至服务器。服务器可以根据接收到的子报文所对应的子报文标识,按照子报文标识标记的子报文顺序将多个子报文进行组合,从而得到完整的消息报文。服务器可以解析完整的消息报文,得到消息数据。

在本实施例中,终端生成消息报文后,获取消息报文所对应的报文长度。当报文长度大于阈值时,将消息报文拆分为多个子报文,并对每个子报文分配对应的子报文标识。终端可以将子报文发送至服务器,服务器根据子报文标识对子报文进行组合和解析,得到消息数据。终端通过拆分消息报文,减少了传输的子报文的数据量,在网络环境不好等情况下也能将消息报文快速的传输至服务器,保证了消息传输的有效性。即使发生消息报文的丢失,也只需要重传对应的子报文,有效的降低了终端的通信成本。

在一个实施例中,终端在将子报文发送至服务器时,终端可以重复发送预设数量的子报文至服务器,直到将所有拆分出的子报文发送至服务器。其中,预设数量可以是用户根据实际需求预先设定的数量。预设数量可以是一个固定值。当预设数量为1时,表示终端逐一将子报文发送至服务器。当终端拆分出的子报文数量小于预设数量时,终端也可以将所有子报文同时发送至服务器。预设数量还可以是可变化的。例如,预设数量可以是子报文数量的百分比,随着子报文数量的变化而变化。预设数量还可以随着网络情况进行调整。当网络传输拥挤或者信号不好时,预设数量的值可以随着网络情况减少。否则增大终端发送子报文的数量。

在本实施例中,终端可以将消息报文拆分成多个子报文后,每次发送预设数量的子报文至服务器,相较于发送消息报文或者同时发送所有子报文,减少了每次传输的数据量。即使在网络传输拥挤或者信号不好的情况下也能将子报文快速发送至服务器,有效的提高了消息传输的效率。

在一个实施例中,上述消息传输方法还包括:接收服务器根据发送的子报文返回的响应信息,响应信息包括服务器接收到的子报文所对应的已接收子报文标识;根据已接收子报文标识判断是否存在服务器未接收的子报文所对应的未接收子报文标识;当存在未接收子报文标识时,将未接收子报文标识所对应的子报文重发至服务器。

服务器接收到终端上传的子报文后,服务器可以根据接收到的子报文向终端返回响应信息。终端可以接收服务器根据终端发送的子报文返回的响应信息。其中,响应信息是指服务器对接收到的子报文的响应。响应信息中可以包括服务器接收到的子报文所对应的子报文标识,可以将服务器接收到的子报文所对应的子报文标识记作已接收子报文标识。服务器可以将已接收子报文标识返回至终端,确定服务器接收到了已接收子报文标识对应的子报文。

终端可以根据服务器返回的已接收子报文标识,以及发送出的子报文所对应的子报文标识,判断是否存在服务器未接收的子报文。终端可以将已发送但服务器未接收的子报文所对应的子报文标识记作未接收子报文标识。其中,终端发送的子报文可以是根据消息报文拆分出的所有子报文,也可以是上述实施例中终端发送的预设数量的子报文。终端可以将服务器返回的已接收子报文标识与发送出的子报文标识进行比对,确定未接收子报文标识。未接收子报文标识对应的子报文可以是在传输过程中丢失的子报文。

在其中一个实施例中,当终端在预设时间段内没有接收到服务器返回的响应信息时,可以确定所有已发送的子报文所对应的子报文标识为未接收子报文标识。其中,预设时间段可以是用户根据实际需求预先设置的时间段,预设时间段可以从终端发送出子报文时开始计算。避免终端长时间等待服务器返回响应消息,有效的提高了终端发送子报文的效率。

当不存在未接收子报文标识时,终端可以继续发送剩余子报文。当存在未接收子报文标识时,终端可以将未接收子报文标识所对应的子报文重新发送至服务器,并接收服务器返回的响应消息。在服务器接收到未接收子报文标识所对应的子报文后,再继续发送剩余子报文,直到将拆分出的子报文全部发送至服务器。

在本实施例中,终端可以通过服务器返回的响应消息确定未接收子报文标识,并重新发送未接收子报文标识所对应的子报文至服务器。当子报文在传输过程中丢失后,终端可以重新发送具体丢失的子报文。相较于传统重复发送消息报文或者对应预设数量的子报文,减少了在子报文丢失下终端重新传输子报文的数据量,有效的提高了消息报文的传输效率,降低了终端通信成本。

应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种消息传输装置,包括:传输任务获取模块402、特定字段获取模块404、配置信息获取模块406、特定字段优化模块408、消息报文生成模块410和消息报文传输模块412,其中:

传输任务获取模块402,用于获取消息传输任务,消息传输任务携带消息数据。

特定字段获取模块404,用于基于预设私有协议获取消息传输任务对应的特定字段,预设私有协议为基于传输控制协议进行优化处理后所得到的应用层协议。

配置信息获取模块406,用于获取预设私有协议对应的报文配置信息,报文配置信息包括特定字段所对应的报头格式信息。

特定字段优化模块408,用于根据报头格式信息对特定字段进行优化,得到特定字节数量的特定优化字段。

消息报文生成模块410,用于根据特定优化字段生成报文报头,确定消息数据作为报文报体,根据报文报头和报文报体生成消息报文。

消息报文传输模块412,用于将消息报文发送至服务器,使得服务器基于预设私有协议对消息报文进行解析,得到消息数据。

在一个实施例中,上述特定字段获取模块404还用于解析消息传输任务,得到消息传输任务对应的任务类型;统计消息传输任务中携带的消息数据,得到消息数据对应的消息长度;获取预设私有协议所对应的版本信息,得到包括任务类型、消息长度以及版本信息的特定字段。

在一个实施例中,上述特定字段获取模块404还用于从报文配置信息中读取移位信息,移位信息包括移位方向和移动位数;根据移位方向和移动位数对消息长度进行加密处理,得到消息数据对应的目标长度。

在一个实施例中,报文配置信息还包括报体格式信息,上述消息报文生成模块410还用于获取序列化模型,将消息数据输入序列化模型中;调用序列化模型根据报体格式信息对消息数据进行序列化处理,得到目标消息数据;将目标消息数据进行封装,得到报文报体。

在一个实施例中,上述消息报文传输模块412还用于获取消息报文所对应的报文长度;当报文长度大于阈值时,将消息报文进行拆分,得到多个子报文,子报文包括对应的子报文标识;将子报文发送至服务器,使得服务器根据子报文标识对接收到的子报文进行组合,并解析得到消息数据。

在一个实施例中,上述消息报文传输模块412还用于接收服务器根据发送的子报文返回的响应信息,响应信息包括服务器接收到的子报文所对应的已接收子报文标识;根据已接收子报文标识判断是否存在服务器未接收的子报文所对应的未接收子报文标识;当存在未接收子报文标识时,将未接收子报文标识所对应的子报文重发至服务器。

关于消息传输装置的具体限定可以参见上文中对于消息传输方法的限定,在此不再赘述。上述消息传输装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种消息传输方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述消息传输方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述消息传输方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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