一种数据通信方法及其相关设备
技术领域
本发明涉及通信技术领域,尤其涉及一种数据通信方法,还涉及一种数据通信装置、系统、计算机可读存储介质以及计算机程序产品。
背景技术
在以太坊中,节点与节点之间通过发送UDP(User Datagram Protocol,用户数据报协议)协议进行数据传输以完成节点间通信。其中,每个以太坊节点均会保存一张网络节点列表,该网络节点列表中主要包括多个节点的IP地址和端口信息,这些节点均为可与本节点实现连通的节点。
然而,由于以太坊只支持UPNP(Universal Plug and Play)和NAT-PMP(NAT PortMapping Protocol)映射,所以对于处于内网且不支持UPNP和NAT-PMP映射的节点,其他节点无法与其建立连接,因此,该部分内网节点只能主动连接到具有公网地址或者UPNP映射成功的节点上,极大的增加了这些节点的连接压力,给以太坊的正常运行带来了较大风险。
发明内容
本发明的主要目的在于提供一种数据通信方法、装置、系统、计算机可读存储介质以及计算机程序产品,旨在解决已有技术中处于内网且不支持UPNP和NAT-PMP映射的节点只能与具有公网地址或者UPNP映射成功的节点建立连接,进行数据通信,造成具有公网地址或者UPNP映射成功的节点的连接压力过大,以太坊正常运行风险较高的问题。
为实现上述目的,本发明提供了一种数据通信方法,所述方法包括:
获取公共节点的网络节点列表;
在所述网络节点列表中选取目标节点,并通过所述公共节点向所述目标节点发送P2P打洞请求;
接收所述目标节点根据所述P2P打洞请求返回的打洞回复信息;
根据所述打洞回复信息与所述目标节点建立连接,进行数据通信。
优选的,所述获取公共节点的网络节点列表,包括:
基于节点查询协议向所述公共节点发送查询请求;
接收所述公共节点根据所述查询请求返回的所述网络节点列表。
优选的,所述根据所述打洞回复信息与所述目标节点建立连接,包括:
根据所述打洞回复信息向所述目标节点发送ping包;
接收所述目标节点根据所述ping包返回的pong包;
根据所述pong包与所述目标节点建立连接。
优选的,所述根据所述打洞回复信息与所述目标节点建立连接之后,还包括:
将所述目标节点的节点信息保存至本地网络节点列表。
优选的,本地节点、所述公共节点、所述目标节点之间通过网络地址转换设备进行信息传输。
为实现上述目的,本发明提供了一种数据通信装置,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的数据通信程序,所述数据通信程序被所述处理器执行时实现如上述任意一种所述的数据通信方法的步骤。
优选的,所述数据通信设备为组成CDN网络或者区块链网络的节点。
为实现上述目的,本发明提供了一种数据通信系统,所述系统包括:
信息获取单元,用于获取公共节点的网络节点列表;
请求发送单元,用于在所述网络节点列表中选取目标节点,并通过所述公共节点向所述目标节点发送P2P打洞请求;
信息反馈单元,用于接收所述目标节点根据所述P2P打洞请求返回的打洞回复信息;
连接建立单元,用于根据所述打洞回复信息与所述目标节点建立连接,进行数据通信。
为实现上述目的,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有数据通信程序,所述数据通信程序可被一个或多个处理器执行,以实现如上任一种所述的数据通信方法的步骤。
为实现上述目的,本发明提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,当其在计算机上运行时,使得计算机可以执行上述任一种所述的数据通信方法的步骤。
本发明所提供的一种数据通信方法,包括获取公共节点的网络节点列表;在所述网络节点列表中选取目标节点,并通过所述公共节点向所述目标节点发送P2P打洞请求;接收所述目标节点根据所述P2P打洞请求返回的打洞回复信息;根据所述打洞回复信息与所述目标节点建立连接,进行数据通信。可见,本发明所提供的技术方案,处于内网且不支持UPNP和NAT-PMP映射的本地节点在公共节点上获取其网络节点列表,并从中获取待进行数据通信的目标节点的节点信息,此时,本地节点并不直接请求与目标节点建立数据连接,而是先通过公共节点与目标节点进行P2P打洞,由于公共节点为具有公网地址或UPNP映射成功的节点,既可以与本地节点进行数据通信,又可与目标节点进行数据通信,因此,打洞完成后即可保证本地节点后期向目标节点发送的连接请求不借助公共节点的转发即能够直接到达目标节点,从而完成节点连接,实现数据通信。由此,本地节点也可以与除公共节点之外的其他节点建立连接,极大的减少了公共节点的连接压力,有效保证了以太坊的正常运行。
本发明所提供的一种数据通信装置、系统、计算机可读存储介质以及计算机程序产品,均具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明第一实施例的流程示意图;
图2为本发明第一实施例中网络节点列表获取方法的流程示意图;
图3为本发明第一实施例中节点间建立连接方法的流程示意图;
图4为本发明第二实施例的流程示意图;
图5为本发明第三实施例的流程示意图;
图6本发明第一实施例揭露的数据通信装置的内部结构示意图;
图7为本发明第四实施例的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明提供的一种数据通信方法。
参照图1,图1为本发明第一实施例的流程示意图。
在第一实施例中,该方法可以包括:
S10:获取公共节点的网络节点列表;
当需要进行节点间连接以实现数据通信时,主动建立连接的节点需要获得被连接节点的节点信息,进一步根据该节点信息实现节点间连接。然而,由于以太坊只支持UPNP和NAT-PMP映射,所以处于内网且不支持UPNP和NAT-PMP映射的节点无法获得其他节点的信息,故无法主动与其他节点建立连接,同样,其他节点也无法获得该节点的节点信息,亦无法主动与该节点建立连接。此时,如若该处于内网且不支持UPNP和NAT-PMP映射的节点想要获得其他节点的节点信息,就需要通过公共节点实现,该公共节点是指具有公网地址或者UPNP映射成功的节点,本步骤即旨在基于公共节点实现对其他节点的节点信息的获取。
为方便描述,以下将处于内网且不支持UPNP和NAT-PMP映射的节点称之为本地节点。具体的,当本地节点接收到节点连接指令时,可先与公共节点建立连接,并向其发起节点信息获取请求,以便从中获得其他节点的节点信息。其中,其他节点的节点信息以网络节点列表的形式存储于公共节点上,因此,当公共节点接收到本地节点发送的节点信息获取请求后,即可将自身存储的网络节点列表发送至本地节点。其中,网络节点列表一般是指临近节点列表,即列表中所涉及到的节点一般为该公共节点的邻近节点,包括内网节点、外网节点、公共节点、非公共节点等,其节点类型并不影响本技术方案的实施。
作为一种优选实施例,请参考图2,图2为本发明第一实施例中网络节点列表获取方法的流程示意图,上述获取公共节点的网络节点列表,可以包括:
S21:基于节点查询协议向公共节点发送查询请求;
S22:接收公共节点根据查询请求返回的网络节点列表。
本申请实施例提供了一种较为具体的网络节点列表的获取方法。具体而言,本地节点可基于节点查询协议(FindNode协议)向公共节点发起查询请求,该查询请求即为上述节点信息获取请求,进一步,公共节点即可根据该查询请求反馈网络节点信息至本地节点。其中,节点查询协议可用于实现向目标节点发送FindNode消息以询问其邻近节点列表,该目标节点即为上述公共节点,临近节点列表即为上述网络节点列表;进一步,目标节点响应FindNode消息,并回复Neighbours消息,该Neighbours消息中即携带了其附近节点的节点信息,也即网络节点列表。
S11:在网络节点列表中选取目标节点,并通过公共节点向目标节点发送P2P打洞请求;
本地节点在获得网络节点列表后,即可从中选取目标节点,该目标节点是指本地节点即将要建立连接的节点,其数目可以为一个,也可以为多个,本申请对此不做限定;进一步,本地节点向该目标节点发起P2P打洞请求,由于本地节点并未与目标节点建立连接,故P2P打洞请求是无法直接从本地节点发送至目标节点的,但由于公共节点为具有公网地址或者UPNP映射成功的节点,可与任何节点建立连接实现数据通信,因此,可通过公共节点将P2P打洞请求发送至目标节点,在该种情况下,无论目标节点为内网节点还是外网节点,均可接收到P2P打洞请求。
需要说明的是,由于网络节点列表中所涉及到节点的节点类型并不唯一,而目标节点又是从网络节点列表中获取的,因此目标节点的节点类型同样不唯一。
S12:接收目标节点根据P2P打洞请求返回的打洞回复信息;
具体的,上述P2P打洞请求中包括有本地节点的节点信息,因此,目标节点在接收到P2P打洞请求后,即可向本地节点反馈对应的打洞回复信息,以完成打洞,从而告知本地节点可以与自身建立连接。当然,上述打洞回复信息的反馈过程同样是通过公共节点的转发实现的。
S13:根据打洞回复信息与目标节点建立连接,进行数据通信。
由于目标节点已经通过打洞回复请求告知本地节点允许与其建立连接,因此,本地节点即可向目标节点发起建立连接请求,以实现本地节点与目标节点之间的连接,从而进行数据通信。
打洞完成后即可保证本地节点后期向目标节点发送的连接请求不借助公共节点的转发即能够直接到达目标节点,从而完成节点连接,实现数据通信。由此,本地节点也可以与除公共节点之外的其他节点建立连接,极大的减少了公共节点的连接压力,有效保证了以太坊的正常运行。
作为一种优选实施例,请参考图3,图3为本发明第一实施例中节点间建立连接方法的流程示意图,上述根据打洞回复信息与目标节点建立连接,可以包括:
S30:根据打洞回复信息向目标节点发送ping包;
S31:接收目标节点根据ping包返回的pong包;
S32:根据pong包与目标节点建立连接。
本申请实施例提供了一种较为具体的节点间的连接建立方法,即通过发送Ping(Packet Internet Groper,因特网包探索器包)实现,Ping是用于测试网络连接量的程序,其实现原理在于对一个网址发送测试数据包,看对方网址是否有响应并统计响应时间,以此测试网络。具体而言,本地节点在接收到打洞回复消息,确定自身可以与目标节点建立连接后,即可向目标节点发送ping包,当然,由于在前述过程中,本地节点与目标节点之间的P2P打洞已经完成,二者可以进行信息传输,故该ping包的发送不再需要公共节点的转发,直接由本地节点发送至目标节点即可;进一步,目标节点即可响应ping包,并向本地节点反馈Pong包,由此,本地节点即可根据该Pong包与目标节点建立连接,从而实现数据通信。
作为一种优选实施例,本地节点、公共节点、目标节点之间可以通过网络地址转换设备进行信息传输。
一般的,当一个节点处于内网时,其可以基于网络地址转换设备(NAT,NetworkAddress Translation)与外接实现信息通信。首先,由于目标节点的类型并不唯一,其可能为内网节点,也可能为外网节点;其次,公共节点是指具有公网地址或者UPNP映射成功的节点,也就是说,该公共节点的节点类型同样不唯一,可能为内网节点,也可能为外网节点;最后,由于本技术方案旨在实现将处于内网且不支持UPNP和NAT-PMP映射的节点与非公共节点建立连接,即本地节点为内网节点,由此,当本地节点、公共节点、目标节点均处于内网时,三者之间的信息传输可通过NAT设备实现,既保证了数据传输的安全性,又适用于本申请所提供的数据通信方法。
最后,需要说明的是,本申请所提供的技术方案虽然旨在实现将处于内网且不支持UPNP和NAT-PMP映射的节点与非公共节点建立连接,但对于不处于内网,或处于内网但不支持UPNP和NAT-PMP映射的节点与非公共节点的连接同样适用,也就是说,本技术方案对于本地节点、公共节点、目标节点的节点类型没有任何限制。
本实施例所提供的数据通信方法,处于内网且不支持UPNP和NAT-PMP映射的本地节点在公共节点上获取其临近节点列表,并从中获取待进行数据通信的目标节点的节点信息,此时,本地节点并不直接请求与目标节点建立数据连接,而是先通过公共节点与目标节点进行P2P打洞,由于公共节点为具有公网地址或UPNP映射成功的节点,既可以与本地节点进行数据通信,又可与目标节点进行数据通信,因此,打洞完成后即可保证本地节点后期向目标节点发送的连接请求能够到达目标节点,从而完成节点连接,实现数据通信。由此,本地节点也可以与除公共节点之外的其他节点建立连接,极大的减少了公共节点的连接压力,有效保证了以太坊的正常运行。
本发明提供的另一种数据通信方法。
参考图4,图4为本发明第二实施例的流程示意图。
在第二实施例中,该方法可以包括:
S40:获取公共节点的网络节点列表;
S41:在网络节点列表中选取目标节点,并通过公共节点向目标节点发送P2P打洞请求;
S42:接收目标节点根据P2P打洞请求返回的打洞回复信息;
S43:根据打洞回复信息与目标节点建立连接,进行数据通信。
S44:将目标节点的节点信息保存至本地网络节点列表。
需要说明的是,本实施例中除S44的其他步骤均参考了第一实施例的S10至S13,其具体内容参考第一实施例即可,以下主要对S44的内容进行具体说明。
本实施例旨在实现本地网络节点的更新,具体而言,在本地节点与目标节点建立连接之后,即可将目标节点的节点信息保存至自身的网络节点列表中,以便于下次进行数据通信时,无需再次进行P2P打洞,可有效保证两者之间的数据通信效率。当然,目标节点也可将本地节点的节点信息存储至其自身的网络节点列表,完成目标节点中网络节点列表的更新。
本实施例所提供的技术方案,本地节点与目标节点建立连接之后,进一步进行了本地网络节点列表的更新,将目标节点的节点信息添加至本地网络节点列表,为后续再次进行数据通信提供了便利。
基于上述各实施例,本发明提供了一种更为具体的数据通信方法。
参照图5,图5为本发明第三实施例的流程示意图。
在第三实施例中,以本地节点、公共节点、目标节点均为内网节点为例,对本申请所提供的技术方案进行详细说明。其中,节点1为本地节点,节点2为公共节点,节点3为目标节点,该方法可以包括:
1、节点1通过NAT1向节点2发起FindNode消息,节点2响应FindNode消息,并回复Neighbours消息,由此,节点1即可获得节点2发送的网络节点列表;
2、节点1通过NAT1向节点2发送打洞请求消息P2pPunchReq(该消息中包含节点3的ID),即通知节点2将P2P打洞请求转发给节点3,由此,节点2收到节点1的P2pPunchReq消息后,即可利用P2pPunchReq请求消息将节点1的IP地址和端口信息通过NAT2转发至节点3;
3、节点3在收到节点2转发的P2pPunchReq消息后,会向节点1发送一个Ping包,但此时NAT1收到节点3的Ping包后不会转给节点1,这是因为节点1与节点3之间并未进行过数据通信,NAT1会认为节点3的消息是不请自来的;
4、节点3在收到节点2转发的P2pPunchReq消息后,还会向节点2发送打洞回复消息P2pPunchResp,以利用节点2将P2P打洞回复消息转发给节点1;
5、节点1收到P2pPunchResp消息后,发送Ping包给节点3,此时节点3网络里对应的NAT2会将Ping包转给节点3,其原因在于节点3之前有主动给节点1发送过Ping包(参照步骤3),所以会接收节点1发送过来的消息;
6、节点3根据节点1发送的Ping包回复Pong包给节点1,实现节点1与节点3的连接;
7、节点1将节点3的节点信息加入本地网络节点列表。
本实施例所提供的数据通信方法,处于内网且不支持UPNP和NAT-PMP映射的本地节点在公共节点上获取其临近节点列表,并从中获取待进行数据通信的目标节点的节点信息,此时,本地节点并不直接请求与目标节点建立数据连接,而是先通过公共节点与目标节点进行P2P打洞,由于公共节点为具有公网地址或UPNP映射成功的节点,既可以与本地节点进行数据通信,又可与目标节点进行数据通信,因此,打洞完成后即可保证本地节点后期向目标节点发送的连接请求无需公共节点中转即能够到达目标节点,从而完成节点连接,实现数据通信。由此,本地节点也可以与除公共节点之外的其他节点建立连接,极大的减少了公共节点的连接压力,有效保证了以太坊的正常运行。
本发明提供的一种数据通信装置。
参照图6,图6为本发明第一实施例揭露的数据通信装置的内部结构示意图。
在本实施例中,数据通信装置1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机、智能路由器、矿机、网络存储设备、终端设备。
该数据通信装置1可以包括存储器11、处理器12和总线13。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是数据通信装置1的内部存储单元,例如该数据通信装置1的硬盘。存储器11在另一些实施例中也可以是数据通信装置1的外部存储设备,例如数据通信装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括数据通信装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于数据通信装置1的应用软件及各类数据,例如数据通信程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行数据通信程序等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,该数据通信装置1可以是组成CDN网络(Content Delivery Network,内容分发网络)或者区块链网络的节点。
进一步地,数据通信装置1还可以包括网络接口,网络接口可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该数据通信装置1与其他电子设备之间建立通信连接。
可选地,该数据通信装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在数据通信装置1中处理的信息以及用于显示可视化的用户界面。
图6仅示出了具有组件11-13以及数据通信程序的数据通信装置1,本领域技术人员可以理解的是,图6示出的结构并不构成对数据通信装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本发明提供的一种数据通信系统。
参照图7,图7为本发明所提供的第四实施例的结构框图。
在第四实施例中,该数据通信系统可以包括:
信息获取单元10,用于获取公共节点的网络节点列表;
请求发送单元20,用于在网络节点列表中选取目标节点,并通过公共节点向目标节点发送P2P打洞请求;
信息反馈单元30,用于接收目标节点根据P2P打洞请求返回的打洞回复信息;
连接建立单元40,用于根据打洞回复信息与目标节点建立连接,进行数据通信。
对于本申请提供的系统的介绍请参照上述方法实施例,本申请在此不做赘述。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上数据通信程序,该数据通信程序可被一个或者多个处理器执行,以实现如以上任一实施例所述的数据通信方法的步骤。
本发明实施例还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当其在计算机上运行时,使得计算机可以执行上述任一实施例所述的数据通信方法的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。