通信方法、装置、计算机设备和计算机可读存储介质与流程

文档序号:24500356发布日期:2021-03-30 21:29阅读:127来源:国知局
通信方法、装置、计算机设备和计算机可读存储介质与流程

本发明涉及计算机技术领域,特别是涉及一种通信方法、装置、计算机设备和计算机可读存储介质。



背景技术:

进程间通信(inter-processcommunication,ipc)是软件开发中常用的技术,它可以帮助我们将复杂软件系统进行模块划分,进而分别开发。qt元信息remoteobjects(简称qtro)是qt元信息库中自带的进程间通信库,它使开发人员使用起来就像本地的qobject对象一样,非常方便。zeromq(简称zmq)是一个开源的网络通信库,它在系统级套接字的基础上实现了更高层的网络通信语义,比如req/rep、pub/sub等。使用zmq开发网络通信,开发人员无需关心底层繁琐的握手协议、错误处理等细节,而是直接使用上层语义快速开发。目前zmq已经到了v4.3.2版本,已经非常稳定。zmq本身是用c++语言实现的,但由于它开源、易用,有很多语言支持zmq,比如python、javascript等,使用非常广泛。

但是,qtro的缺点是只支持qt元信息,不支持其他开发框架;zmq的缺点是:它的接口不像qtro那么好用,学习曲线和qtro相比而言比较陡。



技术实现要素:

本申请提供一种通信方法、装置、计算机设备和计算机可读存储介质,可以将qtro的接口自动转成zmq接口,从而能够结合qtro和zmq的优点,且可以避免两者的缺点,兼顾了进程间通信的易用性和开放性。

一种通信方法,所述方法包括:

获取qtro中的qt元信息,并确定qt元信息的类型;

根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息;

通过接入的zmq服务端套接字对所述qt元信息进行处理。

在一实施例中,所述根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息包括:所述qt元信息的类型包括属性、信号和槽,所述属性包括notify、read和write;所述zmq服务端套接字包括pub套接字和rep套接字;

将信号、属性的notify通过zmq服务端的pub套接字接入;

将属性的read和write操作转化为通过zmq服务端的rep套接字进行操作;

将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用。

在一实施例中,所述将信号、属性的notify通过zmq服务端的pub套接字接入包括:

根据qt的元系统生成一个动态槽函数;所述动态槽函数内部使用zmq服务端的pub套接字发送数据;

根据qt的信号与槽机制,将所述动态槽函数与qtro中的信号、属性的notify建立连接;

在所述动态槽函数中,获取信号和notify的参数,并将所述参数作为pub套接字发送的架构。

在一实施例中,所述将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用包括:

针对每一槽函数,创建对应的rep服务器,所述rep服务器包含zmq服务端的rep套接字;

通过所述rep服务器监听qtro中每一槽函数的名称,作为第一槽函数名称;

接收req请求,并获取req请求的槽函数名称,作为第二槽函数名称;

若所述第一槽函数名称与所述第二槽函数名称一致,则通过所述rep套接字调用qtro中对应的槽函数,并将返回值通过所述rep服务器返回至客户端。

在一实施例中,所述将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用包括:

对于qtro中的所有槽函数生成一个rep服务器,所述rep服务器包含zmq服务端的rep套接字;

接收req请求,并获取req请求的槽函数名称;

若所述qtro中的槽函数名称中包含req请求的槽函数名称,则通过所述rep套接字调用qtro中对应的槽函数,并将返回值通过所述rep服务器返回至客户端。

在一实施例中,所述将属性的read和write操作转化为通过zmq服务端的rep套接字进行操作包括:

创建zmq服务端的rep服务器,并通过所述rep服务器监听外部的zmq数据包;所述rep服务器包含zmq服务端的rep套接字;

根据监听到的zmq数据包和所述rep服务器中的数据进行对比,以通过rep套接字将对应的数据写入或通过rep套接字调用对应的数据。

在一实施例中,所述zmq数据包包括envelop和payload两部分,其中envelop用于存储信号名称或槽函数名称;payload用于存放实际数据。

在一实施例中,所述zmq数据包包括envelop或payload,并以json格式存放在zmq数据包的其中一个字段中。

一种通信装置,所述装置包括:

获取模块,用于获取qt元信息,并确定qt元信息的类型;

匹配模块,用于根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息;

处理模块,用于通过接入的zmq服务端套接字对所述qt元信息进行处理。

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

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

本申请实施例提供的通信方法、装置、计算机设备和计算机可读存储介质,包括获取qtro中的qt元信息,并确定qt元信息的类型;根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息;通过接入的zmq服务端套接字对所述qt元信息进行处理。本申请提供的通信方法,根据qtro中的qt元信息的类型,将qt元信息通过匹配的zmq服务端套接字接入,可以将qtro的接口自动转成zmq接口,从而实现了在底层的模块通信仍然是qtro,开发者仍然可以使用qtro开发各种功能模块;在上层使用zmq接口,从而可以允许其他多种开发语言、框架来接入,兼顾了进程间通信的易用性和开放性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为一实施例提供的通信方法的流程图;

图2为一实施例提供的qtro中的qt元信息转发示意图;

图3为一实施例提供的将信号、属性的notify通过zmq服务端的pub套接字接入的流程图;

图4为一实施例提供的qtro中的信号与动态槽函数连接的示意图;

图5为一实施例提供的将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用的流程图;

图6为一个实施例中通信装置的结构框图;

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

具体实施方式

为了便于理解本申请,为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本申请,附图中给出了本申请的较佳实施方式。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反地,提供这些实施方式的目的是使对本申请的公开内容理解的更加透彻全面。本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似改进,因此本申请不受下面公开的具体实施例的限制。

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

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本申请。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

图1为一实施例提供的通信方法的流程图,如图1所示,通信方法包括步骤110至步骤130,其中:

步骤110,获取qtro中的qt元信息,并确定qt元信息的类型。

qtro使用qt的信号与槽进行编程通信,独有的source/replica模式让远程服务调用起来就像本地的一个qobject一样,所有底层链路序列化和反序列化都由qtro自动完成qt元信息。qtro本质上是一个点对点的通信网络。每个进程通过qremoteobjectnode接入qtro网络。功能提供节点(可以理解为服务器)需要使用qremoteobjecthost将一个提供实际功能的qobject派生类注册进qtro网络中,然后其他使用该功能的程序则通过各自的qremoteobjectnode连接到该host上,然后acquire一个该功能对象的replica。等到该replica初始化好后,该程序就能够使用replica中的信号、槽以及属性,就好像功能类就在本地一样,使用非常方便。

qt元信息的类型包括三种,分别是:属性、信号和槽,其中所述属性进一步分为、读取read、设置write和notify。

其中,信号signal形式上和函数相似,可以带有参数,且没有返回值。通常信号signal最多可带有10个参数。槽slot,最多可带有10个参数,且可以带有返回值。

步骤120,根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息。

qt用信号与槽代替指针,可以将两个互不相关的对象绑定在一起,实现对象之间的通信。对于信号,当对象改变状态时,信号就由该对象发射出去,而且对象只负责发送信号,它无需关心另一端是谁接收这个信号。对于槽,用于接收信号,而且槽只是普通的对象成员函数,一个槽并不知道是否有任何信号与自己相连接,而且对象也无需了解具体的通信机制。在信息系统开发过程中,每次从服务器获取接口数据的过程中都需要一个中间对象建立起服务器与客户端的消息通路。

zmq有多种工作模式,其中两种比较常用的工作模式分别是:

1、发布订阅模式pub/sub。这种模式下,服务端负责广播,而客户端(即订阅端)设置过滤关键字向发布端订阅。这种模式将信息广播模式节藕,发布端无需知道订阅端的细节,而订阅端可以根据需要订阅不同的广播信息。

2、请求应答模式req/rep。这种模式下,服务端等待客户端提出服务请求,然后进行处理,最后返回一个应答结果。类似于web服务器。

zmq服务端套接字包括pub套接字和rep套接字。pub套接字用于广播,rep套接字用于应答。套接字可以理解接口,通过接口可以接收信号和发送信号。通过pub套接字接入qt元信息,则zmq工作在发布订阅模式pub/sub。通过rep套接字接入qt元信息,则zmq工作在请求应答模式req/rep。

由于不同类型的qt元信息对应不同的工作模式,因此,本实施例根据qt元信息的类型和其对应的工作模式,通过匹配的zmq服务端套接字接入所述qt元信息,从而可以将qtro的接口自动转成zmq接口,实现qtro和zmq的有机结合。

qt元信息的类型所匹配的zmq服务端套接字可以理解为:zmq服务端套接字的工作模式与qt元信息的类型对应的工作模式类似,只有这样才可以将qtro和zmq的工作模式和接口有机地结合起来。

步骤130,通过接入的zmq服务端套接字对所述qt元信息进行处理。

本实施例提供的通信方法包括获取qtro中的qt元信息,并确定qt元信息的类型;根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息;通过接入的zmq服务端套接字对所述qt元信息进行处理。本申请提供的通信方法,根据qtro中的qt元信息的类型,将qt元信息通过匹配的zmq服务端套接字接入,可以将qtro的接口自动转成zmq接口,从而实现了在底层的模块通信仍然是qtro,开发者仍然可以使用qtro开发各种功能模块;在上层使用zmq接口,从而可以允许其他多种开发语言、框架来接入,兼顾了进程间通信的易用性和开放性。

在一实施例中,如图2所示,根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息包括:

将信号、属性的notify通过zmq服务端的pub套接字接入;

将属性的read和write操作转化为通过zmq服务端的rep套接字进行操作;

将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用。

由于在qtro通信过程中,信号、属性的notify由对象进行发射出去,而且对象只负责发送信号,无需关心另一端是谁接收这个信号。这种通信机制与zmq的发布订阅模式pub/sub类似,因此本实施例通过zmq服务端的pub套接字接入qtro中的信号和notify,以通过zmq的订阅模式将qtro中的信号和notify发送出去。

由于在qtro通信过程中,槽用于接收信号,而且槽只是普通的对象成员函数,槽并本身并不知道是否有任何信号与自己相连接,而且对象也无需了解具体的通信机制。槽的通信机制与zmq的请求应答模式req/rep类似,都类似于服务器,等待远程客户端调用,然后运行相关功能后将结果返回,因此本实施例将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用。另外对于属性的read和write,由于最后只是返回一个应答结果,这种通信机制也与zmq的请求应答模式req/rep类似,因此本实施例将属性的read和write操作转化为通过zmq服务端的rep套接字进行操作。

在一实施例中,如图3所示,所述将信号、属性的notify通过zmq服务端的pub套接字接入包括步骤310至步骤330,其中:

步骤310,根据qt的元系统生成一个动态槽函数;所述动态槽函数内部使用zmq服务端的pub套接字发送数据。

步骤320,根据qt的信号与槽机制,将所述动态槽函数与qtro中的信号、属性的notify建立连接。

步骤330,在所述动态槽函数中,获取信号和notify的参数,并将所述参数作为pub套接字发送的架构。

对于每个信号和属性的notify,根据qt的元系统生成一个动态槽函数和信号以及属性的notify对接。在动态槽函数中,可以依次获取到所有随信号和属性notify发出来的参数,将其作为zmq服务端pub套接字发送时的架构frames,从而实现了由信号和属性notify到pub套接字的自动转换。

具体地,信号或者属性的notify转化为zmqpub消息的过程如图4所示。左边是qtro的一个信号sigxyz,右边是自动动态构建的一个动态槽函数,其内部使用zmq的pub套接字将数据发送出去。通过qt的信号与槽机制将qtro中的信号与动态槽函数建立连接。则当信号发生时,动态槽函数就会被自动调用,zmq的pub消息就会被广播出去,从而实现了qtro的信号自动转发到zmq的效果。

在一实施例中,所述将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用包括:

对于qtro中的所有槽函数创建一个rep服务器,所述rep服务器包含zmq服务端的rep套接字;

接收req请求,并获取req请求的槽函数名称;

若所述qtro中的槽函数名称中包含req请求的槽函数名称,则通过所述rep套接字调用qtro中对应的槽函数,并将返回值通过所述rep服务器返回至客户端。

本实施例中,对于qtro中的所有槽函数,只创建一个rep服务器,rep服务器可以理解为是一个线程,线程内部有一个zmq服务端的rep套接字。通过该rep服务器中监听req请求,并获取req请求的槽函数名称。具体地,req请求为一个zmq数据包,rep服务器通过检查数据包的envelop字段获取req请求的槽函数名称。若qtro中的槽函数名称中包含req请求的槽函数名称,则通过所述rep套接字调用qtro中对应的槽函数,并将返回值通过所述rep服务器返回至客户端。

本实施例中,由于多个槽函数对应一个线程,因此同一时间只能执行一个函数,缺乏并行的能力。若要让多个槽函数同时执行,该方案无法执行。

在一实施例中,如图5所示,将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用包括步骤510至步骤540,其中:

步骤510,针对每一槽函数,创建对应的rep服务器,所述rep服务器包含zmq服务端的rep套接字。

步骤520,通过所述rep服务器监听qtro中每一槽函数的名称,作为第一槽函数名称。

步骤530,接收req请求,并获取req请求中的槽函数名称,作为第二槽函数名称。

步骤540,若所述第一槽函数名称与所述第二槽函数名称一致,则通过所述rep套接字调用qtro中对应的槽函数,并将返回值通过所述rep服务器返回至客户端。

rep服务器可以理解为是一个线程,线程内部有一个zmq服务端的rep套接字。假如qtro中有一个名称为slotxyz的槽函数需要通过zmq暴露出去,则首先需要针对每一槽函数创建对应的rep服务器,然后通过该rep服务器中监听req请求,并获取req请求的槽函数名称。具体地,req请求为一个zmq数据包,rep服务器通过检查数据包的envelop字段获取req请求的槽函数名称。然后判断zmq数据包的envelop部分是否为“slotxyz”,如果是,则说明客户端要调用该槽函数,则调用该槽函数并将结果作为该次request/reply中的reply部分发送回客户端,完成本次qtro到zmq的转发。

对于每个qtro槽函数,本实施例会自动生成一个线程,每一线程内部有一个zmq服务端的rep套接字。该线程监听外面的zmq数据包,并检查数据包的envelop,如果envelop中是该函数,则调用qtro的槽函数,然后将结果发送回给客户端。由于每个槽函数都有独立的线程,每个线程可以独立运行,这就意味着所有的槽函数都可以并行执行。当然,对于需要同步、互斥的操作,远程客户端的开发者仍然需要做好线程同步工作。

在一实施例中,所述zmq数据包包括envelop或payload,并以json格式存放在zmq数据包的其中一个字段中。

在一实施例中,所述zmq数据包包括envelop和payload两部分,其中envelop用于存储信号名称或槽函数名称。envelop可以是一个字符串,对于qtro信号、属性notify转发来说,envelop存放信号名字,对于qtro槽函数转发来说,envelop存放函数名字;payload中存放的是实际数据。以qtro槽函数转发为例进行说明,当线程监听到外面的zmq数据包后,只需要查看envelop中的槽函数名称,若与该线程中的槽函数名称一致,则说明客户端要调用该槽函数,则调用该槽函数并将结果作为该次request/reply中的reply部分发送回客户端,完成本次qtro到zmq的转发。

在一实施例中,所述zmq数据包包括envelop或payload,并以json格式存放在zmq数据包的其中一个字段中。

以zmq数据包只包括“envelope”部分,用来存放信号名字(对于qtro信号、属性notify转发来说)或者函数名字(对于qtro槽函数转发来说)。在线程监听到zmq数据包后,必须首先整个解析成json对象,然后才能够获取到zmq数据包中的“envelop”字段,进而再分别处理。json对象的解析创建需要花费计算时间和资源,而对于有些消息其实根本不需要解析成json格式,对于这类消息或者处理,json解析就成了不必要的开销。

在一实施例中,所述zmq数据包包括envelop和payload两部分,其中envelop用于存储信号名称或槽函数名称;payload用于存放实际数据。

本实施例中,envelop和payload是分开的,从而可以独立拿到一帧数据(zmq收发数据都是以帧为单位,一个数据包可以包含0到任意多的帧),此时就可以快速判断该数据包的类型,进而根据zmq数据包的类型确定是否需要进一步解析payload。这就为那些不需要json格式的命令节省了很多解析开销。

在一实施例中,所述将属性的read和write操作转化为通过zmq服务端的rep套接字进行操作包括:

创建zmq服务端的rep服务器,并通过所述rep服务器监听外部的zmq数据包;所述rep服务器包含zmq服务端的rep套接字;

根据监听到的zmq数据包和所述rep服务器中的数据进行对比,以通过rep套接字将对应的数据写入或通过rep套接字调用对应的数据。

属性的read和write操作转化为通过zmq服务端的rep套接字进行操作与将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用的方式类似,具体如下:

rep服务器可以理解为是一个线程,线程内部有一个zmq服务端的rep套接字。通过rep服务器监听外部的zmq数据包,zmq数据包包括envelop和payload两部分,其中envelop用于存储信号名称、槽函数名称或参数名称;payload中存放的是实际数据。将监听到的zmq数据包和所述rep服务器中的数据进行对比,若监听到的外部的zmq数据包中的数据与所述rep服务器中的数据一致,则通过rep套接字将对应的数据写入或通过rep套接字调用对应的数据。将zmq数据包和所述rep服务器中的数据进行对比可以是对比envelop中的参数名称与rep服务器中参数名称,若一致,则通过rep套接字将payload中存放的是实际数据写入rep服务器中或通过rep套接字调用rep服务器中对应的数据。

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

在一个实施例中,如图6所示,提供了一种通信装置,包括:获取模块610、匹配模块620和处理模块630,其中:

获取模块610,用于获取qt元信息,并确定qt元信息的类型。

匹配模块620,用于根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息。

处理模块630,用于通过接入的zmq服务端套接字对所述qt元信息进行处理。

在一实施例中,所述qt元信息的类型包括属性、信号和槽,所述属性包括notify、read和write;所述zmq服务端套接字包括pub套接字和rep套接字;

匹配模块620将信号、属性的notify通过zmq服务端的pub套接字发送;

匹配模块620将属性的read和write操作转化为通过zmq服务端的rep套接字进行操作;

匹配模块620将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用。

在一实施例中,匹配模块620将信号、属性的notify通过zmq服务端的pub套接字发送包括:

根据qt的元系统生成一个动态槽函数;所述动态槽函数内部使用zmq服务端的pub套接字发送数据;

根据qt的信号与槽机制,将所述动态槽函数与qtro中的信号、属性的notify建立连接;

在所述动态槽函数中,获取信号和notify的参数,并将所述参数作为pub套接字发送的架构。

在一实施例中,匹配模块620将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用包括:

针对每一槽函数,创建对应的rep服务器,所述rep服务器包含zmq服务端的rep套接字;

通过所述rep服务器监听qtro中每一槽函数的名称,作为第一槽函数名称;

接收req请求,并获取req请求的槽函数名称,作为第二槽函数名称;

若所述第一槽函数名称与所述第二槽函数名称一致,则通过所述rep套接字调用qtro中对应的槽函数,并将返回值通过所述rep服务器返回至客户端。

在一实施例中,匹配模块620将qtro的槽函数调用转化为通过zmq服务端的rep套接字调用包括:

对于qtro中的所有槽函数生成一个rep服务器,所述rep服务器包含zmq服务端的rep套接字;

接收req请求,并获取req请求的槽函数名称;

若所述qtro中的槽函数名称中包含req请求的槽函数名称,则通过所述rep套接字调用qtro中对应的槽函数,并将返回值通过所述rep服务器返回至客户端。

在一实施例中,匹配模块620将属性的read和write操作转化为通过zmq服务端的rep套接字进行操作包括:

创建zmq服务端的rep服务器,并通过所述rep服务器监听外部的zmq数据包;所述rep服务器包含zmq服务端的rep套接字;

根据监听到的zmq数据包和所述rep服务器中的数据进行对比,以通过rep套接字将对应的数据写入或通过rep套接字调用对应的数据。

在一实施例中,所述zmq数据包包括envelop和payload两部分,其中envelop用于存储信号名称或槽函数名称;payload用于存放实际数据。

在一实施例中,所述zmq数据包包括envelop或payload,并以json格式存放在zmq数据包的其中一个字段中。

本申请实施例提供的通信装置,包括获取模块610、匹配模块620和处理模块630,获取模块610获取qtro中的qt元信息,并确定qt元信息的类型;匹配模块620根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息;处理模块630通过接入的zmq服务端套接字对所述qt元信息进行处理。本申请提供的通信装置,根据qtro中的qt元信息的类型,将qt元信息通过匹配的zmq服务端套接字接入,可以将qtro的接口自动转成zmq接口,从而实现了在底层的模块通信仍然是qtro,开发者仍然可以使用qtro开发各种功能模块;在上层使用zmq接口,从而可以允许其他多种开发语言、框架来接入,兼顾了进程间通信的易用性和开放性。

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

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

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

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

获取qtro中的qt元信息,并确定qt元信息的类型;

根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息;

通过接入的zmq服务端套接字对所述qt元信息进行处理。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取qtro中的qt元信息,并确定qt元信息的类型;

根据qt元信息的类型,通过匹配的zmq服务端套接字接入所述qt元信息;

通过接入的zmq服务端套接字对所述qt元信息进行处理。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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