CN103607376B - 一种兼容协议的方法及装置 - Google Patents

一种兼容协议的方法及装置 Download PDF

Info

Publication number
CN103607376B
CN103607376B CN201310522100.6A CN201310522100A CN103607376B CN 103607376 B CN103607376 B CN 103607376B CN 201310522100 A CN201310522100 A CN 201310522100A CN 103607376 B CN103607376 B CN 103607376B
Authority
CN
China
Prior art keywords
version
communications protocol
client
server
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310522100.6A
Other languages
English (en)
Other versions
CN103607376A (zh
Inventor
朱超
陈飞
王超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201310522100.6A priority Critical patent/CN103607376B/zh
Publication of CN103607376A publication Critical patent/CN103607376A/zh
Application granted granted Critical
Publication of CN103607376B publication Critical patent/CN103607376B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种兼容协议的方法及装置,该方法包括:中间件接收服务器向客户端发送的握手消息,中间件判断服务器所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本;如果服务器采用的通讯协议的版本高于中间件采用的通讯协议的版本,则中间件对握手消息中服务器所采用通讯协议的版本信息进行调整,使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同;以及中间件将握手消息发送给客户端,使得服务器可以采用版本调整后的通讯协议与客户端通讯。解决中间件的通讯协议解析代码要经常随通讯协议变化而改变的问题,以极低的成本实现中间件与采用新版本的通讯协议的客户端和服务器端兼容。

Description

一种兼容协议的方法及装置
技术领域
本发明属于计算机技术领域,尤其涉及一种兼容协议的方法及装置。
背景技术
网络应用程序都需要制定一套完整的通讯协议,以供网络应用程序的客户端与服务器端之间的信息发送与接收使用。客户端与服务器端只有在严格遵守通讯协议的条件下,才能正确组织发送出的数据包,并正确解析接收到的数据包。
MySQL服务器端也有自己的通讯协议,用来实现认证、查询、返回结果等功能。中间件因为位于客户端与MySQL服务器端之间,相对于客户端,中间件扮演MySQL服务器端的角色;相对于MySQL服务器端,中间件扮演客户端的角色,所以中间件就要同时实现MySQL的客户端协议和服务器端协议。
当MySQL协议推出新版本,即MySQL协议发生改变时,旧的中间件就不能再适应新版本的MySQL协议。为了适应新版本的MySQL协议,最直接的解决方案就是修改中间件的相关代码,增加对新版本的MySQL协议的处理逻辑。同时添加一个对MySQL协议的版本号的判断流程,当判断出客户端和服务器端采用新版本MySQL的协议,就执行新的协议组包与解析代码,按照新协议的格式进行组包发包和收包解包,否则仍然使用旧协议的格式。
MySQL协议经常会在发布新版时增加一些新的特性,随之带来通讯协议的变化。由于在新版本发布之后,每次都需要修改中间件的程序,即在中间件中加入对新版通讯协议的组包与解析代码,这种频繁的修改会导致修改中间件代码的工作量太大,开发成本也会很高。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的兼容协议的方法及装置,解决中间件的通讯协议解析代码要经常随通讯协议变化而改变的问题,以极低的成本实现中间件与采用新版本的通讯协议的客户端和服务器端兼容。
依据本发明的一个方面,提供了一种兼容协议的方法,包括:中间件接收服务器向客户端发送的握手消息,握手消息包括:服务器所采用通讯协议的版本信息;根据握手消息中的版本信息,中间件判断服务器所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本;如果服务器采用的通讯协议的版本高于中间件采用的通讯协议的版本,则中间件对握手消息中服务器所采用通讯协议的版本信息进行调整,使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同;以及在握手消息中的版本信息调整之后,中间件将握手消息发送给客户端,使得服务器可以采用版本调整后的通讯协议与客户端通讯。
可选地,中间件对握手消息中的服务器所采用的通讯协议的版本信息进行调整的步骤包括:中间件从服务器所采用通讯协议的版本信息中获取服务器的能力标志信息,服务器的能力标志信息用于表示采用当前版本的通讯协议的服务器所具有的工作特性;中间件对获取的服务器的能力标志信息进行调整,使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
可选地,其中服务器的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的服务器所具有的一种工作特性。
可选地,方法还包括:如果服务器采用的通讯协议的版本低于或等于中间件采用的通讯协议的版本,则中间件直接将握手消息发送给客户端。
可选地,在中间件将握手消息发送给客户端的步骤之后,方法还包括:中间件接收客户端向服务器发送的认证消息,认证消息包括:客户端所采用通讯协议的版本信息;中间件判断客户端所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本;如果客户端采用的通讯协议的版本高于中间件采用的通讯协议的版本,则中间件对认证消息中客户端所采用通讯协议的版本信息进行调整,使得客户端所采用通讯协议的版本与中间件所采用的通讯协议的版本相同;在认证消息中的版本信息调整之后,中间件将认证消息发送给服务器,使得客户端可以采用版本调整后的通讯协议与服务器通讯。
可选地,中间件对认证消息中的客户端所采用的通讯协议的版本信息进行调整的步骤包括:中间件从客户端所采用通讯协议的版本信息中获取客户端的能力标志信息,客户端的能力标志信息用于表示采用当前版本的通讯协议的客户端所具有的工作特性;中间件对获取的客户端的能力标志信息进行调整,使得客户端所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
可选地,客户端的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的客户端所具有的一种工作特性。
依据本发明的另一个方面,还提供了一种兼容协议的装置,包括:接收模块,用于接收服务器向客户端发送的握手消息,握手消息包括:服务器所采用通讯协议的版本信息;判断模块,用于根据握手消息中的版本信息,判断服务器所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本;调整模块,用于如果服务器采用的通讯协议的版本高于中间件采用的通讯协议的版本,则对握手消息中服务器所采用通讯协议的版本信息进行调整,使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同;以及发送模块,用于在握手消息中的版本信息调整之后,将握手消息发送给客户端,使得服务器可以采用版本调整后的通讯协议与所述客户端通讯。
可选地,调整模块包括:获取单元,用于从服务器所采用通讯协议的版本信息中获取服务器的能力标志信息,服务器的能力标志信息用于表示采用当前版本的通讯协议的服务器所具有的工作特性;调整单元,用于对获取的服务器的能力标志信息进行调整,使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
可选地,服务器的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的服务器所具有的一种工作特性。
可选地,发送模块还用于如果服务器采用的通讯协议的版本低于或等于中间件采用的通讯协议的版本,直接将握手消息发送给客户端。
可选地,接收模块还用于接收客户端向服务器发送的认证消息,认证消息包括:客户端所采用通讯协议的版本信息;判断模块还用于判断客户端所采用的通讯协议的版本是否高于所述中间件所采用的通讯协议的版本;调整模块还用于如果客户端采用的通讯协议的版本高于中间件采用的通讯协议的版本,对认证消息中客户端所采用通讯协议的版本信息进行调整,使得客户端所采用通讯协议的版本与中间件所采用的通讯协议的版本相同;述发送模块还用于在述认证消息中的版本信息调整之后,将认证消息发送给述服务器,使得客户端可以采用版本调整后的通讯协议与服务器通讯。
可选地,获取单元还用于从客户端所采用通讯协议的版本信息中获取客户端的能力标志信息,客户端的能力标志信息用于表示采用当前版本的通讯协议的客户端所具有的工作特性;调整单元还用于对获取的客户端的能力标志信息进行调整,使得客户端所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
可选地,客户端的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的客户端所具有的一种工作特性。
在本发明的实施例中,如果服务器采用的通讯协议的版本高于中间件采用的通讯协议的版本,中间件可以对握手消息中服务器所采用通讯协议的版本信息进行调整,或者,如果客户端采用的通讯协议的版本高于中间件采用的通讯协议的版本,中间件对认证消息中客户端所采用通讯协议的版本信息进行调整,因此,在本发明的实施例中中间件不仅仅是透传客户端与服务器端之间的数据包,该中间件也会对握手消息或认证消息中的某些字符位进行修改,以较少的工作量实现通讯协议的兼容。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了现有技术中客户端与MySQL服务器端的连接、握手、认证、返回认证结果、发送SQL语句和返回执行结果等阶段的示意图;
图2示出了现有技术中中间件处理客户端与MySQL服务器端的连接、握手、认证和返回认证、发送SQL语句和返回执行结果等阶段的示意图;
图3示出了根据本发明实施例中兼容协议的方法的流程图;
图4示出了根据本发明实施例中中间件处理客户端与MySQL服务器端的连接、握手、认证和返回认证、发送SQL语句和返回执行结果的示意图;以及
图5示出了根据本发明实施例中兼容协议的装置的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,现有技术中客户端与服务器端的通讯可以分为以下几个阶段:连接、握手、认证、返回认证结果、发送SQL语句、返回执行结果。在服务器端向客户端发送握手消息时,该握手消息中包括服务器的能力标志信息,表明服务器端所采用的通讯协议可以支持的所有工作特性,能力标志信息可以包括多个字符位,其中每个字符位表示不同的工作特性,如加密、压缩等。
在客户端接收到握手消息之后,客户端向服务器端发送认证消息时,该认证消息包括客户端的能力标志信息,表明客户端所采用的通讯协议可以支持的所有工作特性,客户端的能力标志信息可以包括多个字符位,每个字符位表示不同的工作特性,如加密、压缩等。
如果客户端通过握手消息发现服务器端所采用的通讯协议的协议版本比客户端所采用的通讯协议的协议版本低,那么客户端就会屏蔽其所采用通讯协议中的高版本特性,以服务器端所采用的通讯协议进行之后的通讯。同样,如果服务器端通过认证消息发现客户端所采用的通讯协议比服务器端所采用的通讯协议的协议版本低,服务器就会屏蔽其所采用的通讯协议中的高版本特性,以客户端所采用的通讯协议进行之后的通讯。如果二者所采用的通讯协议的协议版本一致,则不需要屏蔽任何特性。
如图2所示,现有技术中中间件在处理客户端与服务器端的连接、握手、认证、返回认证结果这四个阶段时,只是将双方的通讯数据包进行简单的透传。在这样的架构中,如果客户端和服务器端所采用的通讯协议的协议版本都高于中间件所采用通讯协议的协议版本,因为握手消息和认证消息被中间件透传,那么客户端和服务器端将使用相同的高版本的通讯协议,而中间件的通讯协议的版本较低,则中间件将不能与客户端和服务器端正常配合运行。目前的解决方案就是修改中间件的代码,将中间件所采用的通讯协议的协议版本升级到与客户端和服务器端所采用的通讯协议的协议版本一致,即三者使用相同的协议版本的通讯协议通讯。然而因为MySQL协议经常会在发布新版时增加一些新的特性,随之带来通讯协议的变化,如果每次都需要中间件修改程序,在其中加入对新版通讯协议的组包与解析代码,代码改动量太大,开发成本也会很高。
下面结合图3来说明根据本发明一个实施例的、适于解决上述技术问题的兼容协议的方法的流程图。
如图3所示,方法300始于步骤S301,在步骤S301中,中间件接收服务器向客户端发送的握手消息,该握手消息包括:服务器所采用通讯协议的版本信息。
中间件,可以是一种独立的系统软件或服务程序,分布式应用软件可以借助中间件在不同的技术之间共享资源。中间件可以位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯,是连接两个独立应用程序或独立系统的软件。当然也可以理解的是,也可以将部署有独立的系统软件或服务程序的实体设备称为中间件,该中间件位于客户端和服务器端之间。在本发明的实施例中该中间件可以对服务器发送的握手消息中通讯协议的版本信息,或者客户端发送的认证消息中通讯协议的版本信息进行调整,以较少的工作量实现通讯协议的兼容。
通讯协议:又称通讯规程,是指通讯双方对数据传送控制的一种约定,约定中包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式及控制字符位定义等问题做出统一规定,通讯双方必须共同遵守。
可选地,在本发明的实施例中,版本信息可以包括通讯协议的版本号和通讯协议的发布日期,以MySQL协议为例,该MySQL协议的版本号包括:5.0、5.0.13、5.1、5.1.10、5.5等。
随后,在步骤S303中,根据握手消息中的版本信息,中间件判断服务器所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本。
可选地,在本发明的实施例中,中间件可以根据版本信息中的通讯协议的版本号或者通讯协议的发布日期,来判断服务器所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本,具体的判断方式如下:
方式一:中间件可以根据通讯协议的版本号中的数字的大小,来判断服务器所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本。如果服务器所采用的通讯协议的版本号为“5.1”,中间件所采用的通讯协议的版本号为“5.5”,则表示服务器采用的通讯协议的版本低于中间件采用的通讯协议的版。如果服务器所采用的通讯协议的版本号为“5.1”,中间件所采用的通讯协议的版本号为“5.0”,则表示服务器采用的通讯协议的版本高于中间件采用的通讯协议的版本。
方式二:通常来说,通讯协议的发布日期可以与通讯协议的版本号对应起来,因此,中间件也可以根据通信协议的发布日期,来判断服务器所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本。
当然可以理解的是,在本发明的实施例中,判断服务器所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本的方式也并不限于此。
如果服务器采用的通讯协议的版本高于中间件采用的通讯协议的版本,则可以进入到步骤S305,在步骤S305中,中间件对握手消息中服务器所采用通讯协议的版本信息进行调整,使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
可选地,在本发明的实施例中,步骤S305可以包括:步骤S3051和步骤S3053,在步骤S3051中,中间件从服务器所采用通讯协议的版本信息中获取服务器的能力标志信息,服务器的能力标志信息用于表示采用当前版本的通讯协议的服务器所具有的工作特性。可选地,服务器的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的服务器所具有的一种工作特性,该工作特性包括:加密、压缩、传输等工作特性。
例如:如果服务器所采用的通讯协议的版本高于中间件所采用的通讯协议的版本,服务器的能力标志信息中表示加密工作特性的字符位置为“1”,表示压缩工作特性的字符位置为“1”,表示传输工作特性的字符位置为“1”,通过将上述字符位置为“1”,以表示服务器具有高版本通讯协议的工作特性。
随后,在步骤S3053中,中间件对获取的服务器的能力标志信息进行调整,使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
在本发明的实施例中,为了实现中间件与服务器所采用通讯协议一致,中间件与服务器之间能够较好的兼容工作,中间件可以对服务器的能力标志信息进行调整使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
例如:将服务器的能力标志信息中表示加密工作特性的字符位置为“0”,表示压缩工作特性的字符位置为“0”,表示传输工作特性的字符位置为“0”,通过将上述字符位置为“0”,以表示服务器不支持高版本通讯协议的工作特性。
由于在步骤S305中中间件对握手消息中服务器所采用通讯协议的版本信息进行调整,因此,在本发明的实施例中中间件不仅仅是透传客户端与服务器端之间的数据包,该中间件也会对握手消息中的某些字符位进行修改,以较少的工作量实现通讯协议的兼容。
随后,在步骤S307中,在握手消息中的版本信息调整之后,中间件将握手消息发送给客户端,使得服务器可以采用版本调整后的通讯协议与客户端通讯。
如果服务器采用的通讯协议的版本低于或等于中间件采用的通讯协议的版本,则进入到步骤S309中,在步骤S309中,中间件直接将握手消息发送给客户端。
可选地,步骤307和步骤S309之后,即在中间件将握手消息发送给客户端的步骤之后,方法300还包括:步骤S311、步骤S313、步骤S315、步骤S317和步骤S319。在步骤S311中,中间件接收客户端向服务器发送的认证消息,认证消息包括:客户端所采用通讯协议的版本信息。
可选地,在本发明的实施例中,版本信息可以包括通讯协议的版本号和通讯协议的发布日期,以MySQL协议为例,该MySQL协议的版本号包括:5.0、5.0.13、5.1、5.1.10、5.5等。
随后,在步骤S313中,中间件判断客户端所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本。
可选地,在本发明的实施例中,中间件可以根据版本信息中的通讯协议的版本号或者通讯协议的发布日期,来判断客户端所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本,具体的判断方式如下:
方式一:中间件可以根据通讯协议的版本号中的数字的大小,来判断客户端所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本。如果客户端所采用的通讯协议的版本号为“5.1”,中间件所采用的通讯协议的版本号为“5.5”,则表示客户端器采用的通讯协议的版本低于中间件采用的通讯协议的版。如果客户端所采用的通讯协议的版本号为“5.1”,中间件所采用的通讯协议的版本号为“5.0”,则表示客户端采用的通讯协议的版本高于中间件采用的通讯协议的版本。
方式二:通常来说,通讯协议的发布日期可以与通讯协议的版本号对应起来,因此,中间件也可以根据通信协议的发布日期,来判断客户端所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本。
当然可以理解的是,在本发明的实施例中,判断客户端所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本的方式也并不限于此。
如果客户端采用的通讯协议的版本高于中间件采用的通讯协议的版本,则进入步骤S315,在步骤S315中,中间件对认证消息中客户端所采用通讯协议的版本信息进行调整,使得客户端所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
可选地,在本发明的实施例中,步骤S315可以包括:步骤S3151和步骤S3153,在步骤S3151中,中间件从客户端所采用通讯协议的版本信息中获取客户端的能力标志信息,客户端的能力标志信息用于表示采用当前版本的通讯协议的客户端所具有的工作特性。可选地,客户端的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的客户端所具有的一种工作特性,该工作特性包括:加密、压缩、传输等工作特性。
例如:如果客户端所采用的通讯协议的版本高于中间件所采用的通讯协议的版本,客户端的能力标志信息中表示加密工作特性的字符位置为“1”,表示压缩工作特性的字符位置为“1”,表示传输工作特性的字符位置为“1”,通过将上述字符位置为“1”,以表示客户端具有高版本通讯协议的工作特性。
随后,在步骤S3153中,中间件对获取的客户端的能力标志信息进行调整,使得客户端所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
在本发明的实施例中,为了实现中间件与客户端所采用通讯协议一致,中间件与客户端之间能够较好的兼容工作,中间件可以对客户端的能力标志信息进行调整使得客户端所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
例如:将客户端的能力标志信息中表示加密工作特性的字符位置为“0”,表示压缩工作特性的字符位置为“0”,表示传输工作特性的字符位置为“0”,通过将上述字符位置为“0”,以表示客户端不支持高版本通讯协议的工作特性。
由于在步骤S315中中间件对认证消息中客户端所采用通讯协议的版本信息进行调整,因此,在本发明的实施例中中间件不仅仅是透传客户端与服务器端之间的数据包,该中间件也会对认证消息中的某些字符位进行修改,以较少的工作量实现通讯协议的兼容。
随后,在步骤S317中,在认证消息中的版本信息调整之后,中间件将认证消息发送给服务器,使得客户端可以采用版本调整后的通讯协议与服务器通讯。
如果客户端采用的通讯协议的版本低于或等于中间件采用的通讯协议的版本,则进入到步骤S319中,在步骤S319中,中间件直接将认证消息发送给服务器。
需要说明的是,图3所示的方法并不限定按所示的各步骤的顺序进行,可以根据需要调整各步骤的先后顺序,另外,所述步骤也不限定于上述步骤划分,上述步骤可以进一步拆分成更多步骤也可以合并成更少步骤。
参见图4,为本发明实施例中中间件处理客户端与MySQL服务器端的连接、握手、认证和返回认证、发送SQL语句和返回执行结果的示意图。如图所示,当客户端和服务器端均采用高版本的通讯协议,而中间件采用低版本的通讯协议时,中间件会将服务器端发来的握手消息进行修改,将其中的能力标志信息中代表高版本协议特性的相应字符位置为“0”,表示服务器端不支持相关高版本通讯协议中的工作特性,也就是说中间件可以欺骗客户端说服务器端使用的是低版本的通讯协议。如此一来,客户端和服务器端就会使用低版本协议通讯,而中间件也是使用低版本协议,三者协议一致,可以很好地兼容工作。
下面结合图5说明根据本发明一个实施例、适于解决上述技术问题的一种兼容协议的装置。
如图5所示,根据本发明的实施例的兼容协议的装置500可以主要包括:接收模块501、判断模块503、调整模块505和发送模块507。应当理解,图5中所表示的各个模块的连接关系仅为示例,本领域技术人员完全可以采用其它的连接关系,只要在这样的连接关系下各个模块也能够实现本发明的功能即可。
在本说明书中,各个模块的功能可以通过使用专用硬件、或者能够与适当的软件相结合来执行处理的硬件来实现。这样的硬件或专用硬件可以包括专用集成电路(ASIC)、各种其它电路、各种处理器等。当由处理器实现时,该功能可以由单个专用处理器、单个共享处理器、或者多个独立的处理器(其中某些可能被共享)来提供。另外,处理器不应该被理解为专指能够执行软件的硬件,而是可以隐含地包括、而不限于数字信号处理器(DSP)硬件、用来存储软件的只读存储器(ROM)、随机存取存储器(RAM)、以及非易失存储设备。
在本发明的实施例中,接收模块501用于接收服务器向客户端发送的握手消息,握手消息包括:所述服务器所采用通讯协议的版本信息。
在本发明的实施例中,判断模块503用于根据握手消息中的版本信息,判断服务器所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本。
在本发明的实施例中,调整模块505用于如果服务器采用的通讯协议的版本高于中间件采用的通讯协议的版本,则对握手消息中服务器所采用通讯协议的版本信息进行调整,使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
在本发明的实施例中,发送模块507用于在握手消息中的版本信息调整之后,将握手消息发送给客户端,使得服务器可以采用版本调整后的通讯协议与客户端通讯。
可选地,调整模块505包括:获取单元和调整单元,其中获取单元用于从服务器所采用通讯协议的版本信息中获取服务器的能力标志信息,服务器的能力标志信息用于表示采用当前版本的通讯协议的服务器所具有的工作特性;调整单元用于对获取的服务器的能力标志信息进行调整,使得服务器所采用通讯协议的版本与中间件所采用的通讯协议的版本相同。
可选地,服务器的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的服务器所具有的一种工作特性。
可选地,发送模块507还用于如果所述服务器采用的通讯协议的版本低于或等于所述中间件采用的通讯协议的版本,直接将所述握手消息发送给所述客户端。
可选地,接收模块501还用于接收客户端向服务器发送的认证消息,所述认证消息包括:所述客户端所采用通讯协议的版本信息;
判断模块503还用于判断所述客户端所采用的通讯协议的版本是否高于中间件所采用的通讯协议的版本;
调整模块505还用于如果客户端采用的通讯协议的版本高于所述中间件采用的通讯协议的版本,对认证消息中客户端所采用通讯协议的版本信息进行调整,使得客户端所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同;
发送模块507还用于在认证消息中的版本信息调整之后,将所述认证消息发送给所述服务器,使得所述客户端可以采用版本调整后的通讯协议与所述服务器通讯。
可选地,在本发明的实施例中,获取单元还用于从客户端所采用通讯协议的版本信息中获取客户端的能力标志信息,所述客户端的能力标志信息用于表示采用当前版本的通讯协议的客户端所具有的工作特性;调整单元还用于对获取的所述客户端的能力标志信息进行调整,使得所述客户端所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同。
可选地,在本发明的实施例中,客户端的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的客户端所具有的一种工作特性。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的兼容协议的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干设备的单元权利要求中,这些设备中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明的实施例还公开了,B8一种兼容协议的装置,包括:接收模块,用于接收服务器向客户端发送的握手消息,所述握手消息包括:所述服务器所采用通讯协议的版本信息;判断模块,用于根据所述握手消息中的版本信息,判断所述服务器所采用的通讯协议的版本是否高于所述中间件所采用的通讯协议的版本;调整模块,用于如果所述服务器采用的通讯协议的版本高于所述中间件采用的通讯协议的版本,则对所述握手消息中服务器所采用通讯协议的版本信息进行调整,使得服务器所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同;以及发送模块,用于在所述握手消息中的版本信息调整之后,将所述握手消息发送给所述客户端,使得所述服务器可以采用版本调整后的通讯协议与所述客户端通讯。B9.根据B8所述的装置,其中所述调整模块包括:获取单元,用于从所述服务器所采用通讯协议的版本信息中获取服务器的能力标志信息,所述服务器的能力标志信息用于表示采用当前版本的通讯协议的服务器所具有的工作特性;调整单元,用于对获取的所述服务器的能力标志信息进行调整,使得所述服务器所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同。B10.根据B9所述的装置,其中所述服务器的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的服务器所具有的一种工作特性。B11.根据B9或B10所述的装置,所述发送模块还用于如果所述服务器采用的通讯协议的版本低于或等于所述中间件采用的通讯协议的版本,直接将所述握手消息发送给所述客户端。B12.根据B9~B11任一项所述的装置,其中所述接收模块还用于接收所述客户端向所述服务器发送的认证消息,所述认证消息包括:所述客户端所采用通讯协议的版本信息;所述判断模块还用于判断所述客户端所采用的通讯协议的版本是否高于所述中间件所采用的通讯协议的版本;所述调整模块还用于如果所述客户端采用的通讯协议的版本高于所述中间件采用的通讯协议的版本,对所述认证消息中客户端所采用通讯协议的版本信息进行调整,使得客户端所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同;所述发送模块还用于在所述认证消息中的版本信息调整之后,将所述认证消息发送给所述服务器,使得所述客户端可以采用版本调整后的通讯协议与所述服务器通讯。B13.根据B12所述的装置,其中所述获取单元还用于从所述客户端所采用通讯协议的版本信息中获取客户端的能力标志信息,所述客户端的能力标志信息用于表示采用当前版本的通讯协议的客户端所具有的工作特性;所述调整单元还用于对获取的所述客户端的能力标志信息进行调整,使得所述客户端所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同。B14.根据B13所述的装置,其中所述客户端的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的客户端所具有的一种工作特性。

Claims (15)

1.一种兼容协议的方法,包括:
中间件接收服务器向客户端发送的握手消息,所述握手消息包括:所述服务器所采用通讯协议的版本信息;
根据所述握手消息中的版本信息,所述中间件判断所述服务器所采用的通讯协议的版本是否高于所述中间件所采用的通讯协议的版本;
如果所述服务器采用的通讯协议的版本高于所述中间件采用的通讯协议的版本,则所述中间件对所述握手消息中服务器所采用通讯协议的版本信息进行调整,使得服务器所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同;以及
在所述握手消息中的版本信息调整之后,所述中间件将所述握手消息发送给所述客户端,使得所述服务器可以采用版本调整后的通讯协议与所述客户端通讯。
2.根据权利要求1所述的方法,其中所述中间件对所述握手消息中的服务器所采用的通讯协议的版本信息进行调整的步骤包括:
所述中间件从所述服务器所采用通讯协议的版本信息中获取服务器的能力标志信息,所述服务器的能力标志信息用于表示采用当前版本的通讯协议的服务器所具有的工作特性;
所述中间件对获取的所述服务器的能力标志信息进行调整,使得所述服务器所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同。
3.根据权利要求2所述的方法,其中所述服务器的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的服务器所具有的一种工作特性。
4.根据权利要求1~3任一项所述的方法,所述方法还包括:
如果所述服务器采用的通讯协议的版本低于或等于所述中间件采用的通讯协议的版本,则所述中间件直接将所述握手消息发送给所述客户端。
5.根据权利要求1~3任一项所述的方法,在所述中间件将所述握手消息发送给客户端的步骤之后,所述方法还包括:
所述中间件接收所述客户端向所述服务器发送的认证消息,所述认证消息包括:所述客户端所采用通讯协议的版本信息;
所述中间件判断所述客户端所采用的通讯协议的版本是否高于所述中间件所采用的通讯协议的版本;
如果所述客户端采用的通讯协议的版本高于所述中间件采用的通讯协议的版本,则所述中间件对所述认证消息中客户端所采用通讯协议的版本信息进行调整,使得客户端所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同;
在所述认证消息中的版本信息调整之后,所述中间件将所述认证消息发送给所述服务器,使得所述客户端可以采用版本调整后的通讯协议与所述服务器通讯。
6.根据权利要求5所述的方法,其中所述中间件对所述认证消息中的客户端所采用的通讯协议的版本信息进行调整的步骤包括:
所述中间件从所述客户端所采用通讯协议的版本信息中获取客户端的能力标志信息,所述客户端的能力标志信息用于表示采用当前版本的通讯协议的客户端所具有的工作特性;
所述中间件对获取的所述客户端的能力标志信息进行调整,使得所述客户端所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同。
7.根据权利要求6所述的方法,其中所述客户端的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的客户端所具有的一种工作特性。
8.一种兼容协议的装置,包括:
接收模块,用于利用中间件接收服务器向客户端发送的握手消息,所述握手消息包括:所述服务器所采用通讯协议的版本信息;
判断模块,用于根据所述握手消息中的版本信息,判断所述服务器所采用的通讯协议的版本是否高于所述中间件所采用的通讯协议的版本;
调整模块,用于如果所述服务器采用的通讯协议的版本高于所述中间件采用的通讯协议的版本,则对所述握手消息中服务器所采用通讯协议的版本信息进行调整,使得服务器所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同;以及
发送模块,用于在所述握手消息中的版本信息调整之后,将所述握手消息发送给所述客户端,使得所述服务器可以采用版本调整后的通讯协议与所述客户端通讯。
9.根据权利要求8所述的装置,其中所述调整模块包括:
获取单元,用于从所述服务器所采用通讯协议的版本信息中获取服务器的能力标志信息,所述服务器的能力标志信息用于表示采用当前版本的通讯协议的服务器所具有的工作特性;
调整单元,用于对获取的所述服务器的能力标志信息进行调整,使得所述服务器所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同。
10.根据权利要求9所述的装置,其中所述服务器的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的服务器所具有的一种工作特性。
11.根据权利要求8~10任一项所述的装置,所述发送模块还用于如果所述服务器采用的通讯协议的版本低于或等于所述中间件采用的通讯协议的版本,直接将所述握手消息发送给所述客户端。
12.根据权利要求8所述的装置,其中
所述接收模块还用于接收所述客户端向所述服务器发送的认证消息,所述认证消息包括:所述客户端所采用通讯协议的版本信息;
所述判断模块还用于判断所述客户端所采用的通讯协议的版本是否高于所述中间件所采用的通讯协议的版本;
所述调整模块还用于如果所述客户端采用的通讯协议的版本高于所述中间件采用的通讯协议的版本,对所述认证消息中客户端所采用通讯协议的版本信息进行调整,使得客户端所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同;
所述发送模块还用于在所述认证消息中的版本信息调整之后,将所述认证消息发送给所述服务器,使得所述客户端可以采用版本调整后的通讯协议与所述服务器通讯。
13.根据权利要求9或10所述的装置,其中
所述接收模块还用于接收所述客户端向所述服务器发送的认证消息,所述认证消息包括:所述客户端所采用通讯协议的版本信息;
所述判断模块还用于判断所述客户端所采用的通讯协议的版本是否高于所述中间件所采用的通讯协议的版本;
所述调整模块还用于如果所述客户端采用的通讯协议的版本高于所述中间件采用的通讯协议的版本,对所述认证消息中客户端所采用通讯协议的版本信息进行调整,使得客户端所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同;
所述发送模块还用于在所述认证消息中的版本信息调整之后,将所述认证消息发送给所述服务器,使得所述客户端可以采用版本调整后的通讯协议与所述服务器通讯。
14.根据权利要求13所述的装置,其中
所述获取单元还用于从所述客户端所采用通讯协议的版本信息中获取客户端的能力标志信息,所述客户端的能力标志信息用于表示采用当前版本的通讯协议的客户端所具有的工作特性;
所述调整单元还用于对获取的所述客户端的能力标志信息进行调整,使得所述客户端所采用通讯协议的版本与所述中间件所采用的通讯协议的版本相同。
15.根据权利要求14所述的装置,其中所述客户端的能力标志信息包括一个或多个字符位,其中每个字符位表示采用当前版本的通讯协议的客户端所具有的一种工作特性。
CN201310522100.6A 2013-10-29 2013-10-29 一种兼容协议的方法及装置 Active CN103607376B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310522100.6A CN103607376B (zh) 2013-10-29 2013-10-29 一种兼容协议的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310522100.6A CN103607376B (zh) 2013-10-29 2013-10-29 一种兼容协议的方法及装置

Publications (2)

Publication Number Publication Date
CN103607376A CN103607376A (zh) 2014-02-26
CN103607376B true CN103607376B (zh) 2017-01-11

Family

ID=50125576

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310522100.6A Active CN103607376B (zh) 2013-10-29 2013-10-29 一种兼容协议的方法及装置

Country Status (1)

Country Link
CN (1) CN103607376B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104363291A (zh) * 2014-11-19 2015-02-18 中国航天科工集团第二研究院七〇六所 一种网络通信中间件实现方法
CN107450936A (zh) * 2016-05-30 2017-12-08 阿里巴巴集团控股有限公司 一种移动应用的中间件升级方法及装置
CN106790201B (zh) * 2016-12-31 2019-10-22 中国移动通信集团江苏有限公司 一种传输数据的方法和装置
CN106980505A (zh) * 2017-03-30 2017-07-25 广东电网有限责任公司信息中心 一种信息系统国产中间件迁移改造方法及装置
CN111212056A (zh) * 2019-12-30 2020-05-29 中电工业互联网有限公司 一种基于809协议的数据解析与分发系统及方法
CN112787865B (zh) * 2021-01-21 2022-11-11 中科创达软件股份有限公司 Hdcp设备兼容方法、装置、电子设备和介质
CN113726922B (zh) * 2021-09-01 2023-10-31 北京百度网讯科技有限公司 一种网络应用层连接协议确定方法、装置及电子设备
CN114064532B (zh) * 2021-11-08 2022-06-17 深圳华云信息系统有限公司 一种数据处理方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7318075B2 (en) * 2004-02-06 2008-01-08 Microsoft Corporation Enhanced tabular data stream protocol
CN101183377A (zh) * 2007-12-10 2008-05-21 华中科技大学 一种基于消息中间件的高可用性数据库集群
CN101840348A (zh) * 2009-12-24 2010-09-22 陕西移数通电讯有限公司 数据库中间件系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7895220B2 (en) * 2005-08-30 2011-02-22 Schlumberger Technology Corporation Middleware method and apparatus and program storage device adapted for linking data sources to software applications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7318075B2 (en) * 2004-02-06 2008-01-08 Microsoft Corporation Enhanced tabular data stream protocol
CN101183377A (zh) * 2007-12-10 2008-05-21 华中科技大学 一种基于消息中间件的高可用性数据库集群
CN101840348A (zh) * 2009-12-24 2010-09-22 陕西移数通电讯有限公司 数据库中间件系统

Also Published As

Publication number Publication date
CN103607376A (zh) 2014-02-26

Similar Documents

Publication Publication Date Title
CN103607376B (zh) 一种兼容协议的方法及装置
US10063649B2 (en) Data translation using a proxy service
CN105389191B (zh) 一种基于局域网的软件升级方法、装置和系统
CN106209726B (zh) 一种移动应用单点登录方法及装置
US20070275733A1 (en) Method for providing certain information
CN104580454A (zh) 一种数据同步方法、装置及系统
CN105554094B (zh) 数据交互方法及装置
CN106681921B (zh) 数据参数化的实现方法和装置
CN110377440B (zh) 信息处理方法和装置
CN104301311B (zh) Dns过滤网络数据内容的方法及设备
US11936755B2 (en) Systems and methods for determining a destination location for transmission of packetized data in a network system based on an application server attribute
US20140149194A1 (en) Granting of benefits
CN103763101A (zh) 一种用户登录验证的方法、装置及系统
KR102344121B1 (ko) 구성 관련 데이터를 검색하기 위한 네트워크 시스템
US11368297B2 (en) Method and apparatus for updating digital certificate
CN108021564A (zh) 一种页面重定向的方法和设备
WO2022179353A1 (zh) 域名解析方法、装置及计算机设备
CN102769625A (zh) 客户端Cookie信息获取方法和装置
KR20170028218A (ko) 동적 모드버스 프로토콜 매핑을 지원하는 통신 장치
WO2017063400A1 (zh) 一种基于业务链信息的报文选路方法及装置
CN104361004B (zh) 浏览器收藏夹数据的处理方法与浏览器
CN112818270B (zh) 数据跨域传递方法、装置及计算机设备
US9866614B2 (en) Methods for website version control using bucket cookies
JP5961471B2 (ja) 複数の情報システムおける出力比較方法
US20140304504A1 (en) Logical network separation method and apparatus

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220719

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.