首页> 中国专利> 一种Host与Mini通信方法、装置、设备及存储介质

一种Host与Mini通信方法、装置、设备及存储介质

摘要

本发明公开了一种Host与Mini通信方法、装置、设备及存储介质,其中方法包括:创建套接字,并对所述套接字进行初始化处理;根据所述套接字连接服务器,并判断是否退出通信;当判断不退出通信时,检测待发送消息队列是否为空;当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。本发明通过利用Google Protocol Buffer的序列化和反序列化特性,设计了快速的粘包方法,仅仅升级通信库的底层实现,保持面向用户的接口一致性,使得用户无需更改已有代码,并有效提高系统响应速度、应用程序适用性和系统安全性。

著录项

  • 公开/公告号CN114979304A

    专利类型发明专利

  • 公开/公告日2022-08-30

    原文格式PDF

  • 申请/专利权人 国汽智控(北京)科技有限公司;

    申请/专利号CN202210560759.X

  • 发明设计人 周鹏;尹斯德;许岩;蒋盛飞;

    申请日2022-05-20

  • 分类号H04L69/16(2022.01);H04L67/565(2022.01);

  • 代理机构北京清亦华知识产权代理事务所(普通合伙) 11201;

  • 代理人赵丽婷

  • 地址 100176 北京市大兴区北京经济技术开发区荣华南路13号院7号楼4层409

  • 入库时间 2023-06-19 16:36:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-16

    实质审查的生效 IPC(主分类):H04L69/16 专利申请号:202210560759X 申请日:20220520

    实质审查的生效

说明书

技术领域

本发明涉及计算机技术领域,尤其是涉及一种Host与Mini通信方法、装置、设备及存储介质。

背景技术

在构思及实现本申请过程中,本申请的发明人发现,现有技术中的Host和mini的跨机通信,会导致部署和学习其它第三方库带来的时间成本。例如,在ICVOS0.5版本的通信底层实现中,采用了系统生成API实现的固传固收方案,即按照固定长度L传输,按照固定长度L接收。当用户发送的数据少于长度L时,则填充剩余长度;超过长度L传输时,则提示用户传输失败。当每项数据的传输量相对于长度L波动较大时,极度浪费带宽。

前面的叙述在于提供一般的背景信息,并不一定构成现有技术。

发明内容

本发明实施例所要解决的技术问题在于,提供一种Host与Mini通信方法、装置、设备及存储介质,能够解决目前Host与Mini的跨机通信极度浪费带宽,以及在部署和学习第三方库时时间成本和资源增加的问题。

为解决上述问题,本申请实施例的第一方面提供了一种Host与Mini通信方法,至少包括如下步骤:

创建套接字,并对所述套接字进行初始化处理;

根据所述套接字连接服务器,并判断是否退出通信;

当判断不退出通信时,检测待发送消息队列是否为空;

当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;

对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。

在第一方面的一种可能的实现方式中,在所述发送至所述服务器之后,还包括:

再次检测所述待发送消息队列是否为空;

当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;

对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。

在第一方面的一种可能的实现方式中,还包括:

当判断退出通信时,关闭所述套接字,结束通信。

在第一方面的一种可能的实现方式中,在所述创建套接字,并对所述套接字进行初始化处理之后,还包括:

对所述套接字进行绑定,并监听所述套接字。

在第一方面的一种可能的实现方式中,所述根据所述套接字连接服务器,并判断是否退出通信之后,还包括:

初始化所述服务器的第一缓冲区;

当判断不退出通信时,通过所述服务器对所述套接字进行轮询,并读取数据至第二缓冲区;

判断所述第二缓冲区的数据是否逐个字节遍历完毕;

若是,则退出通信;

若否,则对所述第一缓冲区进行字节追加,并对所述第一缓冲区的数据进行反序列化。

在第一方面的一种可能的实现方式中,在所述对所述第一缓冲区的数据进行反序列化后,还包括:

判断所述反序列化是否成功;

若是,调用用户回调信息,并清空所述第一缓冲区;

若否,则再次判断所述第二缓冲区的数据是否逐个字节遍历完毕。

在第一方面的一种可能的实现方式中,在所述再次判断所述第二缓冲区的数据是否逐个字节遍历完毕之后,还包括:

当判断所述第二缓冲区的数据未逐个字节遍历完毕时,对所述第一缓冲区进行字节追加,并对所述第一缓冲区的数据再次进行反序列化;

再次判断所述反序列化是否成功。

相应地,本申请实施例的第二方面提供了一种Host与Mini通信装置,包括:

套接字模块,用于创建套接字,并对所述套接字进行初始化处理;

连接模块,用于根据所述套接字连接服务器,并判断是否退出通信;

消息队列模块,用于当判断不退出通信时,检测待发送消息队列是否为空;

消息出队模块,用于当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;

通信模块,用于对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。

本申请实施例的第三方面还提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的Host与Mini通信方法的步骤。

本申请实施例的第四方面还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的Host与Mini通信方法的步骤。

实施本发明实施例,具有如下有益效果:

本发明实施例提供的一种Host与Mini通信方法、装置、设备及存储介质,所述方法包括:创建套接字,并对所述套接字进行初始化处理;根据所述套接字连接服务器,并判断是否退出通信;当判断不退出通信时,检测待发送消息队列是否为空;当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。本发明实施例通过利用GoogleProtocol Buffer的序列化和反序列化特性,设计了快速的粘包方法,仅仅升级通信库的底层实现,保持面向用户的接口一致性,使得用户无需更改已有代码,并有效提高系统响应速度、应用程序适用性和系统安全性。

附图说明

图1为本申请一实施例的Host与Mini通信方法的流程示意图;

图2为本申请一实施例的基于客户端实现Host与Mini通信方法的流程示意图;

图3为本申请一实施例的基于服务器端实现Host与Mini通信方法的流程示意图;

图4为本申请一实施例的Host与Mini通信装置的结构示意框图;

图5为本申请一实施例的计算机设备的结构示意框图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

本申请实施例可以应用于服务器中,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。

首先介绍本发明可以提供的应用场景,如提供一种Host与Mini通信方法、装置、设备及存储介质,能够利用Google Protocol Buffer的序列化和反序列化特性,设计了快速的粘包方法,实现Host与Mini通信。

本发明第一实施例:

请参阅图1。

如图1所示,本实施例提供了一种Host与Mini通信方法,至少包括如下步骤:

S1、创建套接字,并对所述套接字进行初始化处理;

S2、根据所述套接字连接服务器,并判断是否退出通信;

S3、当判断不退出通信时,检测待发送消息队列是否为空;

S4、当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;

S5、对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。

在现有技术中,Host和mini的跨机通信会导致在部署和学习其它第三方库时带来大量额外时间成本和资源成本,例如,在ICVOS 0.5版本的通信底层实现中,采用了系统生成API实现的固传固收方案,即按照固定长度L传输,按照固定长度L接收。当用户发送的数据少于长度L时,则填充剩余长度;超过长度L传输时,则提示用户传输失败。当每项数据的传输量相对于长度L波动较大时,极度浪费带宽。而本申请实施例为了解决上述技术问题,利用Google Protocol Buffer的序列化和反序列化特性,设计了快速的粘包方法,实现Host与Mini通信,仅仅依靠升级通信库的底层实现,仍保持了面向用户的接口一致性,使得用户无需修改已有代码,提高应用程序适用性和系统响应速度。

具体的,对于步骤S1,首先在客户端创建套接字,并对创建的套接字进行初始化处理。套接字(socket)为通信的端点,每个套接字由一个IP地址和一个端口号组成。通过网络通信的每对进程需要使用一对套接字,即每个进程各有一个。通常,套接字采用客户机-服务器架构。服务器通过监听指定端口,来等待客户请求。服务器在收到请求后,接受来自客户套接字的连接,从而完成连接。

对于步骤S2,主要根据初始化后的套接字连接服务器,并根据用户需求判断是否需要断开连接和退出通信。

对于步骤S3,当判断不退出通信,需要继续连接通信时,检测当前待发送的消息队列是否为空。

对于步骤S4,当检测到当前待发送的消息队列不为空时,即消息队列中存在若干个消息数据时,对当前待发送的消息队列中的若干个消息数据进行消息出队处理,将消息逐一出队。其中,消息出队逻辑取决于消息队列的类型。

对于步骤S5,对完成消息出队的消息数据先后进行格式转换和序列化,将消息数据转换成pb字符串后进行序列化,并将序列化的pb字符串发送至根据套接字连接的服务器,从而进行Host和Mini的跨机通信。

在一种优选的实施例中,在所述发送至所述服务器之后,还包括:

再次检测所述待发送消息队列是否为空;

当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;

对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。

在具体的实施例中,在步骤S5之后,还包括如下过程:再次检测当前所述待发送消息队列中的是否为空,判断是否已将待发送消息队列的消息数据全部发送,若检测到当前待发送消息队列中的消息数据并未全部发送,则需要再次对所述待发送消息队列中的消息进行消息出队处理;对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。循环上述过程,直至当前待发送消息队列中的消息数据全部清空,完成本次通信。

在一种优选的实施例中,还包括:

当判断退出通信时,关闭所述套接字,结束通信。

在具体的实施例中,本实施例的Host与Mini通信方法,还包括:当根据用户指令判断需要退出通信时,关闭所述创建的套接字,结束本次通信。

在一种优选的实施例中,在所述创建套接字,并对所述套接字进行初始化处理之后,还包括:

对所述套接字进行绑定,并监听所述套接字。

在具体的实施例中,在步骤S1之后,还包括对初始化的创建套接字进行绑定,同时对绑定的套接字进行实时监听。

在一种优选的实施例中,所述根据所述套接字连接服务器,并判断是否退出通信之后,还包括:

初始化所述服务器的第一缓冲区;

当判断不退出通信时,通过所述服务器对所述套接字进行轮询,并读取数据至第二缓冲区;

判断所述第二缓冲区的数据是否逐个字节遍历完毕;

若是,则退出通信;

若否,则对所述第一缓冲区进行字节追加,并对所述第一缓冲区的数据进行反序列化。

在具体的实施例中,在所述步骤S2之后,对连接的服务器的第一缓冲区进行初始化,清空第一缓冲区的所有数据;当判断当前不退出通信时,完成消息出队,通过服务器对接收的套接字进行轮询,并读取对应的数据至第二缓冲区。判断第二缓冲区的数据是否逐一字节遍历完毕,若是,则退出本次通信;若否,则需要对第一缓冲区进行字节追加,并对字节追加后的第一缓冲区的数据进行反序列化处理。

在一种优选的实施例中,在所述对所述第一缓冲区的数据进行反序列化后,还包括:

判断所述反序列化是否成功;

若是,调用用户回调信息,并清空所述第一缓冲区;

若否,则再次判断所述第二缓冲区的数据是否逐个字节遍历完毕。

在具体的实施例中,当对字节追加后的第一缓冲区的数据进行反序列化处理,还会判断本轮反序列化处理是否成功,若判断成功,则调用用户回调信息,并清空第一缓冲区;若判断未成功,则再次判断第二缓冲区的数据是否已经逐个字节遍历完毕。循环上述过程,直至判断本轮反序列化处理完全成功。

在一种优选的实施例中,在所述再次判断所述第二缓冲区的数据是否逐个字节遍历完毕之后,还包括:

当判断所述第二缓冲区的数据未逐个字节遍历完毕时,对所述第一缓冲区进行字节追加,并对所述第一缓冲区的数据再次进行反序列化;

再次判断所述反序列化是否成功。

在具体的实施例中,当再次判断第二缓冲区的数据是否已经逐个字节遍历完毕,若判断第二缓冲区的数据未逐个字节遍历完毕时,退出本次通信;若判断第二缓冲区的数据未逐个字节遍历完毕时,则对所述第一缓冲区进行字节追加,并对所述第一缓冲区的数据再次进行反序列化;再次判断所述反序列化是否成功。循环上述过程,直至第二缓冲区的数据逐个字节遍历完毕。

本实施例提供的一种Host与Mini通信方法,包括:创建套接字,并对所述套接字进行初始化处理;根据所述套接字连接服务器,并判断是否退出通信;当判断不退出通信时,检测待发送消息队列是否为空;当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。本实施例通过利用Google Protocol Buffer的序列化和反序列化特性,设计了快速的粘包方法,实现Hos与Mini通信,仅仅升级通信库的底层实现,保持面向用户的接口一致性,使得用户无需更改已有代码,解决现有技术中Host与Mini的跨机通信极度浪费带宽,以及在部署和学习第三方库时时间成本和资源增加的问题,并有效提高系统响应速度、应用程序适用性和系统安全性。

本发明第二实施例:

请参阅图2。

如图2所示,本实施例还提供了一种基于客户端实现Host与Mini通信方法,执行于客户端,具体流程包括:首先创建套接字,然后初始化套接字;连接服务器,判断是否退出本次连接或通信;若是,则关闭套接字,结束本次通信;若否,则检测待发送消息队列是否为空;若是,则等待指令,退出本次通信;若否,则消息出队,转换成pb字符串,接着进行序列化,最后发送消息;发送消息后再次返回检测待发送消息队列是否为空的步骤,循环上述过程,直至待发送消息队列为空,退出本次通信。

本发明第三实施例:

请参阅图3。

如图3所示,本实施例还提供了一种基于服务器端实现Host与Mini通信方法的流程示意图,执行于服务器端,具体流程包括:创建套接字;绑定套接字;监听套接字;等待客户端连接;初始化缓冲区为空;判断是否退出本次通信;若是,则直接关闭套接字,结束本次通信;若否,则对套接字进行轮询,读取数据至缓冲区A;检测缓冲区A是否逐字遍历完毕,若是,则退出本次通信;若否。则对缓冲区B字节追加,对缓冲区B数据进行反序列化;判断反序列化是否成功,若是,则调用用户回调,清空缓存区B,再返回检测缓冲区A是否逐字遍历完毕步骤,循环该步骤直至缓冲区A逐字遍历完毕,退出通信;若否,则直接返回返回检测缓冲区A是否逐字遍历完毕步骤,直至反序列化成功。

本发明第四实施例:

请参阅图4。

如图4所示,本实施例提供了一种Host与Mini通信装置,包括:

套接字模块100,用于创建套接字,并对所述套接字进行初始化处理。

具体的,对于套接字模块100,首先在客户端创建套接字,并对创建的套接字进行初始化处理。套接字(socket)为通信的端点,每个套接字由一个IP地址和一个端口号组成。通过网络通信的每对进程需要使用一对套接字,即每个进程各有一个。通常,套接字采用客户机-服务器架构。服务器通过监听指定端口,来等待客户请求。服务器在收到请求后,接受来自客户套接字的连接,从而完成连接。

连接模块200,用于根据所述套接字连接服务器,并判断是否退出通信。

具体的,对于连接模块200,主要根据初始化后的套接字连接服务器,并根据用户需求判断是否需要断开连接和退出通信。

消息队列模块300,用于当判断不退出通信时,检测待发送消息队列是否为空。

具体的,对于消息队列模块300,当判断不退出通信,需要继续连接通信时,检测当前待发送的消息队列是否为空。

消息出队模块400,用于当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理。

具体的,对于消息出队模块400,当检测到当前待发送的消息队列不为空时,即消息队列中存在若干个消息数据时,对当前待发送的消息队列中的若干个消息数据进行消息出队处理,将消息逐一出队。其中,消息出队逻辑取决于消息队列的类型。

通信模块500,用于对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。

具体的,对于通信模块500,对完成消息出队的消息数据先后进行格式转换和序列化,将消息数据转换成pb字符串后进行序列化,并将序列化的pb字符串发送至根据套接字连接的服务器,从而进行Host和Mini的跨机通信。

本实施例通过套接字模块创建套接字,并对所述套接字进行初始化处理;通过连接模块根据所述套接字连接服务器,并判断是否退出通信;通过消息队列模块当判断不退出通信时,检测待发送消息队列是否为空;通过消息出队模块当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;通过通信模块对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。本实施例通过利用Google Protocol Buffer的序列化和反序列化特性,设计了快速的粘包方法,实现Hos与Mini通信,仅仅升级通信库的底层实现,保持面向用户的接口一致性,使得用户无需更改已有代码,解决现有技术中Host与Mini的跨机通信极度浪费带宽,以及在部署和学习第三方库时时间成本和资源增加的问题,并有效提高系统响应速度、应用程序适用性和系统安全性。

参照图5,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于储存Host与Mini通信方法等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种Host与Mini通信方法。所述Host与Mini通信方法,包括:创建套接字,并对所述套接字进行初始化处理;根据所述套接字连接服务器,并判断是否退出通信;当判断不退出通信时,检测待发送消息队列是否为空;当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。

本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种Host与Mini通信方法,包括步骤:创建套接字,并对所述套接字进行初始化处理;根据所述套接字连接服务器,并判断是否退出通信;当判断不退出通信时,检测待发送消息队列是否为空;当检测到所述待发送消息队列不为空时,对所述待发送消息队列中的消息进行消息出队处理;对完成消息出队处理的消息进行格式转换和序列化,并发送至所述服务器。

上述执行的Host与Mini通信方法,本实施例通过利用Google Protocol Buffer的序列化和反序列化特性,设计了快速的粘包方法,实现Hos与Mini通信,仅仅升级通信库的底层实现,保持面向用户的接口一致性,使得用户无需更改已有代码,解决现有技术中Host与Mini的跨机通信极度浪费带宽,以及在部署和学习第三方库时时间成本和资源增加的问题,并有效提高系统响应速度、应用程序适用性和系统安全性。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

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

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号