一種兼容協(xié)議的方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種兼容協(xié)議的方法及裝置,該方法包括:中間件接收服務(wù)器向客戶(hù)端發(fā)送的握手消息,中間件判斷服務(wù)器所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本;如果服務(wù)器采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,則中間件對(duì)握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同;以及中間件將握手消息發(fā)送給客戶(hù)端,使得服務(wù)器可以采用版本調(diào)整后的通訊協(xié)議與客戶(hù)端通訊。解決中間件的通訊協(xié)議解析代碼要經(jīng)常隨通訊協(xié)議變化而改變的問(wèn)題,以極低的成本實(shí)現(xiàn)中間件與采用新版本的通訊協(xié)議的客戶(hù)端和服務(wù)器端兼容。
【專(zhuān)利說(shuō)明】一種兼容協(xié)議的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種兼容協(xié)議的方法及裝置。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)應(yīng)用程序都需要制定一套完整的通訊協(xié)議,以供網(wǎng)絡(luò)應(yīng)用程序的客戶(hù)端與服務(wù)器端之間的信息發(fā)送與接收使用。客戶(hù)端與服務(wù)器端只有在嚴(yán)格遵守通訊協(xié)議的條件下,才能正確組織發(fā)送出的數(shù)據(jù)包,并正確解析接收到的數(shù)據(jù)包。
[0003]MySQL服務(wù)器端也有自己的通訊協(xié)議,用來(lái)實(shí)現(xiàn)認(rèn)證、查詢(xún)、返回結(jié)果等功能。中間件因?yàn)槲挥诳蛻?hù)端與MySQL服務(wù)器端之間,相對(duì)于客戶(hù)端,中間件扮演MySQL服務(wù)器端的角色;相對(duì)于MySQL服務(wù)器端,中間件扮演客戶(hù)端的角色,所以中間件就要同時(shí)實(shí)現(xiàn)MySQL的客戶(hù)端協(xié)議和服務(wù)器端協(xié)議。
[0004]當(dāng)MySQL協(xié)議推出新版本,即MySQL協(xié)議發(fā)生改變時(shí),舊的中間件就不能再適應(yīng)新版本的MySQL協(xié)議。為了適應(yīng)新版本的MySQL協(xié)議,最直接的解決方案就是修改中間件的相關(guān)代碼,增加對(duì)新版本的MySQL協(xié)議的處理邏輯。同時(shí)添加一個(gè)對(duì)MySQL協(xié)議的版本號(hào)的判斷流程,當(dāng)判斷出客戶(hù)端和服務(wù)器端采用新版本MySQL的協(xié)議,就執(zhí)行新的協(xié)議組包與解析代碼,按照新協(xié)議的格式進(jìn)行組包發(fā)包和收包解包,否則仍然使用舊協(xié)議的格式。
[0005]MySQL協(xié)議經(jīng)常會(huì)在發(fā)布新版時(shí)增加一些新的特性,隨之帶來(lái)通訊協(xié)議的變化。由于在新版本發(fā)布之后,每次都需要修改中間件的程序,即在中間件中加入對(duì)新版通訊協(xié)議的組包與解析代碼,這種頻繁的修改會(huì)導(dǎo)致修改中間件代碼的工作量太大,開(kāi)發(fā)成本也會(huì)很聞。
【發(fā)明內(nèi)容】
[0006]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的兼容協(xié)議的方法及裝置,解決中間件的通訊協(xié)議解析代碼要經(jīng)常隨通訊協(xié)議變化而改變的問(wèn)題,以極低的成本實(shí)現(xiàn)中間件與采用新版本的通訊協(xié)議的客戶(hù)端和服務(wù)器端兼容。
[0007]依據(jù)本發(fā)明的一個(gè)方面,提供了一種兼容協(xié)議的方法,包括:中間件接收服務(wù)器向客戶(hù)端發(fā)送的握手消息,握手消息包括:服務(wù)器所采用通訊協(xié)議的版本信息;根據(jù)握手消息中的版本信息,中間件判斷服務(wù)器所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本;如果服務(wù)器采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,則中間件對(duì)握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同;以及在握手消息中的版本信息調(diào)整之后,中間件將握手消息發(fā)送給客戶(hù)端,使得服務(wù)器可以采用版本調(diào)整后的通訊協(xié)議與客戶(hù)端通訊O
[0008]可選地,中間件對(duì)握手消息中的服務(wù)器所采用的通訊協(xié)議的版本信息進(jìn)行調(diào)整的步驟包括:中間件從服務(wù)器所采用通訊協(xié)議的版本信息中獲取服務(wù)器的能力標(biāo)志信息,月艮務(wù)器的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的工作特性;中間件對(duì)獲取的服務(wù)器的能力標(biāo)志信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0009]可選地,其中服務(wù)器的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的一種工作特性。
[0010]可選地,方法還包括:如果服務(wù)器采用的通訊協(xié)議的版本低于或等于中間件采用的通訊協(xié)議的版本,則中間件直接將握手消息發(fā)送給客戶(hù)端。
[0011 ] 可選地,在中間件將握手消息發(fā)送給客戶(hù)端的步驟之后,方法還包括:中間件接收客戶(hù)端向服務(wù)器發(fā)送的認(rèn)證消息,認(rèn)證消息包括:客戶(hù)端所采用通訊協(xié)議的版本信息;中間件判斷客戶(hù)端所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本;如果客戶(hù)端采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,則中間件對(duì)認(rèn)證消息中客戶(hù)端所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得客戶(hù)端所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同;在認(rèn)證消息中的版本信息調(diào)整之后,中間件將認(rèn)證消息發(fā)送給服務(wù)器,使得客戶(hù)端可以采用版本調(diào)整后的通訊協(xié)議與服務(wù)器通訊。
[0012]可選地,中間件對(duì)認(rèn)證消息中的客戶(hù)端所采用的通訊協(xié)議的版本信息進(jìn)行調(diào)整的步驟包括:中間件從客戶(hù)端所采用通訊協(xié)議的版本信息中獲取客戶(hù)端的能力標(biāo)志信息,客戶(hù)端的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的工作特性;中間件對(duì)獲取的客戶(hù)端的能力標(biāo)志信息進(jìn)行調(diào)整,使得客戶(hù)端所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0013]可選地,客戶(hù)端的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的一種工作特性。
[0014]依據(jù)本發(fā)明的另一個(gè)方面,還提供了一種兼容協(xié)議的裝置,包括:接收模塊,用于接收服務(wù)器向客戶(hù)端發(fā)送的握手消息,握手消息包括:服務(wù)器所采用通訊協(xié)議的版本信息;判斷模塊,用于根據(jù)握手消息中的版本信息,判斷服務(wù)器所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本;調(diào)整模塊,用于如果服務(wù)器采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,則對(duì)握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同;以及發(fā)送模塊,用于在握手消息中的版本信息調(diào)整之后,將握手消息發(fā)送給客戶(hù)端,使得服務(wù)器可以采用版本調(diào)整后的通訊協(xié)議與所述客戶(hù)端通訊。
[0015]可選地,調(diào)整模塊包括:獲取單元,用于從服務(wù)器所采用通訊協(xié)議的版本信息中獲取服務(wù)器的能力標(biāo)志信息,服務(wù)器的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的工作特性;調(diào)整單元,用于對(duì)獲取的服務(wù)器的能力標(biāo)志信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0016]可選地,服務(wù)器的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的一種工作特性。
[0017]可選地,發(fā)送模塊還用于如果服務(wù)器采用的通訊協(xié)議的版本低于或等于中間件采用的通訊協(xié)議的版本,直接將握手消息發(fā)送給客戶(hù)端。
[0018]可選地,接收模塊還用于接收客戶(hù)端向服務(wù)器發(fā)送的認(rèn)證消息,認(rèn)證消息包括:客戶(hù)端所采用通訊協(xié)議的版本信息;判斷模塊還用于判斷客戶(hù)端所采用的通訊協(xié)議的版本是否高于所述中間件所采用的通訊協(xié)議的版本;調(diào)整模塊還用于如果客戶(hù)端采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,對(duì)認(rèn)證消息中客戶(hù)端所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得客戶(hù)端所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同;述發(fā)送模塊還用于在述認(rèn)證消息中的版本信息調(diào)整之后,將認(rèn)證消息發(fā)送給述服務(wù)器,使得客戶(hù)端可以采用版本調(diào)整后的通訊協(xié)議與服務(wù)器通訊。
[0019]可選地,獲取單元還用于從客戶(hù)端所采用通訊協(xié)議的版本信息中獲取客戶(hù)端的能力標(biāo)志信息,客戶(hù)端的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的工作特性;調(diào)整單元還用于對(duì)獲取的客戶(hù)端的能力標(biāo)志信息進(jìn)行調(diào)整,使得客戶(hù)端所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0020]可選地,客戶(hù)端的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的一種工作特性。
[0021 ] 在本發(fā)明的實(shí)施例中,如果服務(wù)器采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,中間件可以對(duì)握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,或者,如果客戶(hù)端采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,中間件對(duì)認(rèn)證消息中客戶(hù)端所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,因此,在本發(fā)明的實(shí)施例中中間件不僅僅是透?jìng)骺蛻?hù)端與服務(wù)器端之間的數(shù)據(jù)包,該中間件也會(huì)對(duì)握手消息或認(rèn)證消息中的某些字符位進(jìn)行修改,以較少的工作量實(shí)現(xiàn)通訊協(xié)議的兼容。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0022]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0023]圖1示出了現(xiàn)有技術(shù)中客戶(hù)端與MySQL服務(wù)器端的連接、握手、認(rèn)證、返回認(rèn)證結(jié)果、發(fā)送SQL語(yǔ)句和返回執(zhí)行結(jié)果等階段的示意圖;
[0024]圖2示出了現(xiàn)有技術(shù)中中間件處理客戶(hù)端與MySQL服務(wù)器端的連接、握手、認(rèn)證和返回認(rèn)證、發(fā)送SQL語(yǔ)句和返回執(zhí)行結(jié)果等階段的示意圖;
[0025]圖3示出了根據(jù)本發(fā)明實(shí)施例中兼容協(xié)議的方法的流程圖;
[0026]圖4示出了根據(jù)本發(fā)明實(shí)施例中中間件處理客戶(hù)端與MySQL服務(wù)器端的連接、握手、認(rèn)證和返回認(rèn)證、發(fā)送SQL語(yǔ)句和返回執(zhí)行結(jié)果的示意圖;以及
[0027]圖5示出了根據(jù)本發(fā)明實(shí)施例中兼容協(xié)議的裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0028]下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0029]如圖1所示,現(xiàn)有技術(shù)中客戶(hù)端與服務(wù)器端的通訊可以分為以下幾個(gè)階段:連接、握手、認(rèn)證、返回認(rèn)證結(jié)果、發(fā)送SQL語(yǔ)句、返回執(zhí)行結(jié)果。在服務(wù)器端向客戶(hù)端發(fā)送握手消息時(shí),該握手消息中包括服務(wù)器的能力標(biāo)志信息,表明服務(wù)器端所采用的通訊協(xié)議可以支持的所有工作特性,能力標(biāo)志信息可以包括多個(gè)字符位,其中每個(gè)字符位表示不同的工作特性,如加密、壓縮等。
[0030]在客戶(hù)端接收到握手消息之后,客戶(hù)端向服務(wù)器端發(fā)送認(rèn)證消息時(shí),該認(rèn)證消息包括客戶(hù)端的能力標(biāo)志信息,表明客戶(hù)端所采用的通訊協(xié)議可以支持的所有工作特性,客戶(hù)端的能力標(biāo)志信息可以包括多個(gè)字符位,每個(gè)字符位表示不同的工作特性,如加密、壓縮
坐寸ο
[0031]如果客戶(hù)端通過(guò)握手消息發(fā)現(xiàn)服務(wù)器端所采用的通訊協(xié)議的協(xié)議版本比客戶(hù)端所采用的通訊協(xié)議的協(xié)議版本低,那么客戶(hù)端就會(huì)屏蔽其所采用通訊協(xié)議中的高版本特性,以服務(wù)器端所采用的通訊協(xié)議進(jìn)行之后的通訊。同樣,如果服務(wù)器端通過(guò)認(rèn)證消息發(fā)現(xiàn)客戶(hù)端所采用的通訊協(xié)議比服務(wù)器端所采用的通訊協(xié)議的協(xié)議版本低,服務(wù)器就會(huì)屏蔽其所采用的通訊協(xié)議中的高版本特性,以客戶(hù)端所采用的通訊協(xié)議進(jìn)行之后的通訊。如果二者所采用的通訊協(xié)議的協(xié)議版本一致,則不需要屏蔽任何特性。
[0032]如圖2所示,現(xiàn)有技術(shù)中中間件在處理客戶(hù)端與服務(wù)器端的連接、握手、認(rèn)證、返回認(rèn)證結(jié)果這四個(gè)階段時(shí),只是將雙方的通訊數(shù)據(jù)包進(jìn)行簡(jiǎn)單的透?jìng)?。在這樣的架構(gòu)中,如果客戶(hù)端和服務(wù)器端所采用的通訊協(xié)議的協(xié)議版本都高于中間件所采用通訊協(xié)議的協(xié)議版本,因?yàn)槲帐窒⒑驼J(rèn)證消息被中間件透?jìng)?,那么客?hù)端和服務(wù)器端將使用相同的高版本的通訊協(xié)議,而中間件的通訊協(xié)議的版本較低,則中間件將不能與客戶(hù)端和服務(wù)器端正常配合運(yùn)行。目前的解決方案就是修改中間件的代碼,將中間件所采用的通訊協(xié)議的協(xié)議版本升級(jí)到與客戶(hù)端和服務(wù)器端所采用的通訊協(xié)議的協(xié)議版本一致,即三者使用相同的協(xié)議版本的通訊協(xié)議通訊。然而因?yàn)镸ySQL協(xié)議經(jīng)常會(huì)在發(fā)布新版時(shí)增加一些新的特性,隨之帶來(lái)通訊協(xié)議的變化,如果每次都需要中間件修改程序,在其中加入對(duì)新版通訊協(xié)議的組包與解析代碼,代碼改動(dòng)量太大,開(kāi)發(fā)成本也會(huì)很高。
[0033]下面結(jié)合圖3來(lái)說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例的、適于解決上述技術(shù)問(wèn)題的兼容協(xié)議的方法的流程圖。
[0034]如圖3所示,方法300始于步驟S301,在步驟S301中,中間件接收服務(wù)器向客戶(hù)端發(fā)送的握手消息,該握手消息包括:服務(wù)器所采用通訊協(xié)議的版本信息。
[0035]中間件,可以是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件可以借助中間件在不同的技術(shù)之間共享資源。中間件可以位于客戶(hù)機(jī)/服務(wù)器的操作系統(tǒng)之上,管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通訊,是連接兩個(gè)獨(dú)立應(yīng)用程序或獨(dú)立系統(tǒng)的軟件。當(dāng)然也可以理解的是,也可以將部署有獨(dú)立的系統(tǒng)軟件或服務(wù)程序的實(shí)體設(shè)備稱(chēng)為中間件,該中間件位于客戶(hù)端和服務(wù)器端之間。在本發(fā)明的實(shí)施例中該中間件可以對(duì)服務(wù)器發(fā)送的握手消息中通訊協(xié)議的版本信息,或者客戶(hù)端發(fā)送的認(rèn)證消息中通訊協(xié)議的版本信息進(jìn)行調(diào)整,以較少的工作量實(shí)現(xiàn)通訊協(xié)議的兼容。
[0036]通訊協(xié)議:又稱(chēng)通訊規(guī)程,是指通訊雙方對(duì)數(shù)據(jù)傳送控制的一種約定,約定中包括對(duì)數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、檢糾錯(cuò)方式及控制字符位定義等問(wèn)題做出統(tǒng)一規(guī)定,通訊雙方必須共同遵守。
[0037]可選地,在本發(fā)明的實(shí)施例中,版本信息可以包括通訊協(xié)議的版本號(hào)和通訊協(xié)議的發(fā)布日期,以MySQL協(xié)議為例,該MySQL協(xié)議的版本號(hào)包括:5.0,5.0.13,5.1,5.1.10,5.5
坐寸ο[0038]隨后,在步驟S303中,根據(jù)握手消息中的版本信息,中間件判斷服務(wù)器所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本。
[0039]可選地,在本發(fā)明的實(shí)施例中,中間件可以根據(jù)版本信息中的通訊協(xié)議的版本號(hào)或者通訊協(xié)議的發(fā)布日期,來(lái)判斷服務(wù)器所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本,具體的判斷方式如下:
[0040]方式一:中間件可以根據(jù)通訊協(xié)議的版本號(hào)中的數(shù)字的大小,來(lái)判斷服務(wù)器所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本。如果服務(wù)器所采用的通訊協(xié)議的版本號(hào)為“5.1”,中間件所采用的通訊協(xié)議的版本號(hào)為“5.5”,則表示服務(wù)器采用的通訊協(xié)議的版本低于中間件采用的通訊協(xié)議的版。如果服務(wù)器所采用的通訊協(xié)議的版本號(hào)為“5.1”,中間件所采用的通訊協(xié)議的版本號(hào)為“5.0”,則表示服務(wù)器采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本。
[0041]方式二:通常來(lái)說(shuō),通訊協(xié)議的發(fā)布日期可以與通訊協(xié)議的版本號(hào)對(duì)應(yīng)起來(lái),因此,中間件也可以根據(jù)通信協(xié)議的發(fā)布日期,來(lái)判斷服務(wù)器所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本。
[0042]當(dāng)然可以理解的是,在本發(fā)明的實(shí)施例中,判斷服務(wù)器所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本的方式也并不限于此。
[0043]如果服務(wù)器采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,則可以進(jìn)入到步驟S305,在步驟S305中,中間件對(duì)握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0044]可選地,在本發(fā)明的實(shí)施例中,步驟S305可以包括:步驟S3051和步驟S3053,在步驟S3051中,中間件從服務(wù)器所采用通訊協(xié)議的版本信息中獲取服務(wù)器的能力標(biāo)志信息,服務(wù)器的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的工作特性??蛇x地,服務(wù)器的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的一種工作特性,該工作特性包括:加密、壓縮、傳輸?shù)裙ぷ魈匦浴?br>
[0045]例如:如果服務(wù)器所采用的通訊協(xié)議的版本高于中間件所采用的通訊協(xié)議的版本,服務(wù)器的能力標(biāo)志信息中表示加密工作特性的字符位置為“ 1”,表示壓縮工作特性的字符位置為“ I ”,表示傳輸工作特性的字符位置為“ I ”,通過(guò)將上述字符位置為“ I ”,以表示服務(wù)器具有高版本通訊協(xié)議的工作特性。
[0046]隨后,在步驟S3053中,中間件對(duì)獲取的服務(wù)器的能力標(biāo)志信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0047]在本發(fā)明的實(shí)施例中,為了實(shí)現(xiàn)中間件與服務(wù)器所采用通訊協(xié)議一致,中間件與服務(wù)器之間能夠較好的兼容工作,中間件可以對(duì)服務(wù)器的能力標(biāo)志信息進(jìn)行調(diào)整使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0048]例如:將服務(wù)器的能力標(biāo)志信息中表示加密工作特性的字符位置為“0”,表示壓縮工作特性的字符位置為“0”,表示傳輸工作特性的字符位置為“0”,通過(guò)將上述字符位置為“0”,以表示服務(wù)器不支持高版本通訊協(xié)議的工作特性。
[0049]由于在步驟S305中中間件對(duì)握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,因此,在本發(fā)明的實(shí)施例中中間件不僅僅是透?jìng)骺蛻?hù)端與服務(wù)器端之間的數(shù)據(jù)包,該中間件也會(huì)對(duì)握手消息中的某些字符位進(jìn)行修改,以較少的工作量實(shí)現(xiàn)通訊協(xié)議的兼容。
[0050]隨后,在步驟S307中,在握手消息中的版本信息調(diào)整之后,中間件將握手消息發(fā)送給客戶(hù)端,使得服務(wù)器可以采用版本調(diào)整后的通訊協(xié)議與客戶(hù)端通訊。
[0051]如果服務(wù)器采用的通訊協(xié)議的版本低于或等于中間件采用的通訊協(xié)議的版本,則進(jìn)入到步驟S309中,在步驟S309中,中間件直接將握手消息發(fā)送給客戶(hù)端。
[0052]可選地,步驟307和步驟S309之后,即在中間件將握手消息發(fā)送給客戶(hù)端的步驟之后,方法300還包括:步驟S311、步驟S313、步驟S315、步驟S317和步驟S319。在步驟S311中,中間件接收客戶(hù)端向服務(wù)器發(fā)送的認(rèn)證消息,認(rèn)證消息包括:客戶(hù)端所采用通訊協(xié)議的版本信息。
[0053]可選地,在本發(fā)明的實(shí)施例中,版本信息可以包括通訊協(xié)議的版本號(hào)和通訊協(xié)議的發(fā)布日期,以MySQL協(xié)議為例,該MySQL協(xié)議的版本號(hào)包括:5.0,5.0.13,5.1,5.1.10,5.5
坐寸ο
[0054]隨后,在步驟S313中,中間件判斷客戶(hù)端所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本。
[0055]可選地,在本發(fā)明的實(shí)施例中,中間件可以根據(jù)版本信息中的通訊協(xié)議的版本號(hào)或者通訊協(xié)議的發(fā)布日期,來(lái)判斷客戶(hù)端所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本,具體的判斷方式如下:
[0056]方式一:中間件可以根據(jù)通訊協(xié)議的版本號(hào)中的數(shù)字的大小,來(lái)判斷客戶(hù)端所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本。如果客戶(hù)端所采用的通訊協(xié)議的版本號(hào)為“5.1”,中間件所采用的通訊協(xié)議的版本號(hào)為“5.5”,則表示客戶(hù)端器采用的通訊協(xié)議的版本低于中間件采用的通訊協(xié)議的版。如果客戶(hù)端所采用的通訊協(xié)議的版本號(hào)為“5.1”,中間件所采用的通訊協(xié)議的版本號(hào)為“5.0”,則表示客戶(hù)端采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本。
[0057]方式二:通常來(lái)說(shuō),通訊協(xié)議的發(fā)布日期可以與通訊協(xié)議的版本號(hào)對(duì)應(yīng)起來(lái),因此,中間件也可以根據(jù)通信協(xié)議的發(fā)布日期,來(lái)判斷客戶(hù)端所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本。
[0058]當(dāng)然可以理解的是,在本發(fā)明的實(shí)施例中,判斷客戶(hù)端所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本的方式也并不限于此。
[0059]如果客戶(hù)端采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,則進(jìn)入步驟S315,在步驟S315中,中間件對(duì)認(rèn)證消息中客戶(hù)端所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得客戶(hù)端所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0060]可選地,在本發(fā)明的實(shí)施例中,步驟S315可以包括:步驟S3151和步驟S3153,在步驟S3151中,中間件從客戶(hù)端所采用通訊協(xié)議的版本信息中獲取客戶(hù)端的能力標(biāo)志信息,客戶(hù)端的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的工作特性。可選地,客戶(hù)端的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的一種工作特性,該工作特性包括:加密、壓縮、傳輸?shù)裙ぷ魈匦浴?br>
[0061]例如:如果客戶(hù)端所采用的通訊協(xié)議的版本高于中間件所采用的通訊協(xié)議的版本,客戶(hù)端的能力標(biāo)志信息中表示加密工作特性的字符位置為“ 1”,表示壓縮工作特性的字符位置為“ I ”,表示傳輸工作特性的字符位置為“ I ”,通過(guò)將上述字符位置為“ I ”,以表示客戶(hù)端具有高版本通訊協(xié)議的工作特性。
[0062]隨后,在步驟S3153中,中間件對(duì)獲取的客戶(hù)端的能力標(biāo)志信息進(jìn)行調(diào)整,使得客戶(hù)端所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0063]在本發(fā)明的實(shí)施例中,為了實(shí)現(xiàn)中間件與客戶(hù)端所采用通訊協(xié)議一致,中間件與客戶(hù)端之間能夠較好的兼容工作,中間件可以對(duì)客戶(hù)端的能力標(biāo)志信息進(jìn)行調(diào)整使得客戶(hù)端所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0064]例如:將客戶(hù)端的能力標(biāo)志信息中表示加密工作特性的字符位置為“0”,表示壓縮工作特性的字符位置為“0”,表示傳輸工作特性的字符位置為“0”,通過(guò)將上述字符位置為“0”,以表示客戶(hù)端不支持高版本通訊協(xié)議的工作特性。
[0065]由于在步驟S315中中間件對(duì)認(rèn)證消息中客戶(hù)端所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,因此,在本發(fā)明的實(shí)施例中中間件不僅僅是透?jìng)骺蛻?hù)端與服務(wù)器端之間的數(shù)據(jù)包,該中間件也會(huì)對(duì)認(rèn)證消息中的某些字符位進(jìn)行修改,以較少的工作量實(shí)現(xiàn)通訊協(xié)議的兼容。
[0066]隨后,在步驟S317中,在認(rèn)證消息中的版本信息調(diào)整之后,中間件將認(rèn)證消息發(fā)送給服務(wù)器,使得客戶(hù)端可以采用版本調(diào)整后的通訊協(xié)議與服務(wù)器通訊。
[0067]如果客戶(hù)端采用的通訊協(xié)議的版本低于或等于中間件采用的通訊協(xié)議的版本,則進(jìn)入到步驟S319中,在步驟S319中,中間件直接將認(rèn)證消息發(fā)送給服務(wù)器。
[0068]需要說(shuō)明的是,圖3所示的方法并不限定按所示的各步驟的順序進(jìn)行,可以根據(jù)需要調(diào)整各步驟的先后順序,另外,所述步驟也不限定于上述步驟劃分,上述步驟可以進(jìn)一步拆分成更多步驟也可以合并成更少步驟。
[0069]參見(jiàn)圖4,為本發(fā)明實(shí)施例中中間件處理客戶(hù)端與MySQL服務(wù)器端的連接、握手、認(rèn)證和返回認(rèn)證、發(fā)送SQL語(yǔ)句和返回執(zhí)行結(jié)果的示意圖。如圖所示,當(dāng)客戶(hù)端和服務(wù)器端均采用高版本的通訊協(xié)議,而中間件采用低版本的通訊協(xié)議時(shí),中間件會(huì)將服務(wù)器端發(fā)來(lái)的握手消息進(jìn)行修改,將其中的能力標(biāo)志信息中代表高版本協(xié)議特性的相應(yīng)字符位置為“0”,表示服務(wù)器端不支持相關(guān)高版本通訊協(xié)議中的工作特性,也就是說(shuō)中間件可以欺騙客戶(hù)端說(shuō)服務(wù)器端使用的是低版本的通訊協(xié)議。如此一來(lái),客戶(hù)端和服務(wù)器端就會(huì)使用低版本協(xié)議通訊,而中間件也是使用低版本協(xié)議,三者協(xié)議一致,可以很好地兼容工作。
[0070]下面結(jié)合圖5說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例、適于解決上述技術(shù)問(wèn)題的一種兼容協(xié)議的裝置。
[0071]如圖5所示,根據(jù)本發(fā)明的實(shí)施例的兼容協(xié)議的裝置500可以主要包括:接收模塊501、判斷模塊503、調(diào)整模塊505和發(fā)送模塊507。應(yīng)當(dāng)理解,圖5中所表示的各個(gè)模塊的連接關(guān)系僅為示例,本領(lǐng)域技術(shù)人員完全可以采用其它的連接關(guān)系,只要在這樣的連接關(guān)系下各個(gè)模塊也能夠?qū)崿F(xiàn)本發(fā)明的功能即可。
[0072]在本說(shuō)明書(shū)中,各個(gè)模塊的功能可以通過(guò)使用專(zhuān)用硬件、或者能夠與適當(dāng)?shù)能浖嘟Y(jié)合來(lái)執(zhí)行處理的硬件來(lái)實(shí)現(xiàn)。這樣的硬件或?qū)S糜布梢园▽?zhuān)用集成電路(ASIC)、各種其它電路、各種處理器等。當(dāng)由處理器實(shí)現(xiàn)時(shí),該功能可以由單個(gè)專(zhuān)用處理器、單個(gè)共享處理器、或者多個(gè)獨(dú)立的處理器(其中某些可能被共享)來(lái)提供。另外,處理器不應(yīng)該被理解為專(zhuān)指能夠執(zhí)行軟件的硬件,而是可以隱含地包括、而不限于數(shù)字信號(hào)處理器(DSP)硬件、用來(lái)存儲(chǔ)軟件的只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、以及非易失存儲(chǔ)設(shè)備。[0073]在本發(fā)明的實(shí)施例中,接收模塊501用于接收服務(wù)器向客戶(hù)端發(fā)送的握手消息,握手消息包括:所述服務(wù)器所采用通訊協(xié)議的版本信息。
[0074]在本發(fā)明的實(shí)施例中,判斷模塊503用于根據(jù)握手消息中的版本信息,判斷服務(wù)器所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本。
[0075]在本發(fā)明的實(shí)施例中,調(diào)整模塊505用于如果服務(wù)器采用的通訊協(xié)議的版本高于中間件采用的通訊協(xié)議的版本,則對(duì)握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0076]在本發(fā)明的實(shí)施例中,發(fā)送模塊507用于在握手消息中的版本信息調(diào)整之后,將握手消息發(fā)送給客戶(hù)端,使得服務(wù)器可以采用版本調(diào)整后的通訊協(xié)議與客戶(hù)端通訊。
[0077]可選地,調(diào)整模塊505包括:獲取單元和調(diào)整單元,其中獲取單元用于從服務(wù)器所采用通訊協(xié)議的版本信息中獲取服務(wù)器的能力標(biāo)志信息,服務(wù)器的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的工作特性;調(diào)整單元用于對(duì)獲取的服務(wù)器的能力標(biāo)志信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與中間件所采用的通訊協(xié)議的版本相同。
[0078]可選地,服務(wù)器的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的一種工作特性。
[0079]可選地,發(fā)送模塊507還用于如果所述服務(wù)器采用的通訊協(xié)議的版本低于或等于所述中間件采用的通訊協(xié)議的版本,直接將所述握手消息發(fā)送給所述客戶(hù)端。
[0080]可選地,接收模塊501還用于接收客戶(hù)端向服務(wù)器發(fā)送的認(rèn)證消息,所述認(rèn)證消息包括:所述客戶(hù)端所采用通訊協(xié)議的版本信息;
[0081]判斷模塊503還用于判斷所述客戶(hù)端所采用的通訊協(xié)議的版本是否高于中間件所采用的通訊協(xié)議的版本;
[0082]調(diào)整模塊505還用于如果客戶(hù)端采用的通訊協(xié)議的版本高于所述中間件采用的通訊協(xié)議的版本,對(duì)認(rèn)證消息中客戶(hù)端所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得客戶(hù)端所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同;
[0083]發(fā)送模塊507還用于在認(rèn)證消息中的版本信息調(diào)整之后,將所述認(rèn)證消息發(fā)送給所述服務(wù)器,使得所述客戶(hù)端可以采用版本調(diào)整后的通訊協(xié)議與所述服務(wù)器通訊。
[0084]可選地,在本發(fā)明的實(shí)施例中,獲取單元還用于從客戶(hù)端所采用通訊協(xié)議的版本信息中獲取客戶(hù)端的能力標(biāo)志信息,所述客戶(hù)端的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的工作特性;調(diào)整單元還用于對(duì)獲取的所述客戶(hù)端的能力標(biāo)志信息進(jìn)行調(diào)整,使得所述客戶(hù)端所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同。
[0085]可選地,在本發(fā)明的實(shí)施例中,客戶(hù)端的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的一種工作特性。
[0086]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類(lèi)系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。[0087]在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。
[0088]類(lèi)似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書(shū)由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0089]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的替代特征來(lái)代替。
[0090]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
[0091 ] 本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP )來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的兼容協(xié)議的裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0092]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干設(shè)備的單元權(quán)利要求中,這些設(shè)備中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱(chēng)。
[0093]本發(fā)明的實(shí)施例還公開(kāi)了,B8 —種兼容協(xié)議的裝置,包括:接收模塊,用于接收服務(wù)器向客戶(hù)端發(fā)送的握手消息,所述握手消息包括:所述服務(wù)器所采用通訊協(xié)議的版本信息;判斷模塊,用于根據(jù)所述握手消息中的版本信息,判斷所述服務(wù)器所采用的通訊協(xié)議的版本是否高于所述中間件所采用的通訊協(xié)議的版本;調(diào)整模塊,用于如果所述服務(wù)器采用的通訊協(xié)議的版本高于所述中間件采用的通訊協(xié)議的版本,則對(duì)所述握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同;以及發(fā)送模塊,用于在所述握手消息中的版本信息調(diào)整之后,將所述握手消息發(fā)送給所述客戶(hù)端,使得所述服務(wù)器可以采用版本調(diào)整后的通訊協(xié)議與所述客戶(hù)端通訊。B9.根據(jù)B8所述的裝置,其中所述調(diào)整模塊包括:獲取單元,用于從所述服務(wù)器所采用通訊協(xié)議的版本信息中獲取服務(wù)器的能力標(biāo)志信息,所述服務(wù)器的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的工作特性;調(diào)整單元,用于對(duì)獲取的所述服務(wù)器的能力標(biāo)志信息進(jìn)行調(diào)整,使得所述服務(wù)器所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同。Bl0.根據(jù)B9所述的裝置,其中所述服務(wù)器的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的一種工作特性。Bll.根據(jù)B9或BlO所述的裝置,所述發(fā)送模塊還用于如果所述服務(wù)器采用的通訊協(xié)議的版本低于或等于所述中間件采用的通訊協(xié)議的版本,直接將所述握手消息發(fā)送給所述客戶(hù)端。B12.根據(jù)B9?Bll任一項(xiàng)所述的裝置,其中所述接收模塊還用于接收所述客戶(hù)端向所述服務(wù)器發(fā)送的認(rèn)證消息,所述認(rèn)證消息包括:所述客戶(hù)端所采用通訊協(xié)議的版本信息;所述判斷模塊還用于判斷所述客戶(hù)端所采用的通訊協(xié)議的版本是否高于所述中間件所采用的通訊協(xié)議的版本;所述調(diào)整模塊還用于如果所述客戶(hù)端采用的通訊協(xié)議的版本高于所述中間件采用的通訊協(xié)議的版本,對(duì)所述認(rèn)證消息中客戶(hù)端所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得客戶(hù)端所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同;所述發(fā)送模塊還用于在所述認(rèn)證消息中的版本信息調(diào)整之后,將所述認(rèn)證消息發(fā)送給所述服務(wù)器,使得所述客戶(hù)端可以采用版本調(diào)整后的通訊協(xié)議與所述服務(wù)器通訊。B13.根據(jù)B12所述的裝置,其中所述獲取單元還用于從所述客戶(hù)端所采用通訊協(xié)議的版本信息中獲取客戶(hù)端的能力標(biāo)志信息,所述客戶(hù)端的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的工作特性;所述調(diào)整單元還用于對(duì)獲取的所述客戶(hù)端的能力標(biāo)志信息進(jìn)行調(diào)整,使得所述客戶(hù)端所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同。B14.根據(jù)B13所述的裝置,其中所述客戶(hù)端的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的一種工作特性。
【權(quán)利要求】
1.一種兼容協(xié)議的方法,包括: 中間件接收服務(wù)器向客戶(hù)端發(fā)送的握手消息,所述握手消息包括:所述服務(wù)器所采用通訊協(xié)議的版本信息; 根據(jù)所述握手消息中的版本信息,所述中間件判斷所述服務(wù)器所采用的通訊協(xié)議的版本是否高于所述中間件所采用的通訊協(xié)議的版本; 如果所述服務(wù)器采用的通訊協(xié)議的版本高于所述中間件采用的通訊協(xié)議的版本,則所述中間件對(duì)所述握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同;以及 在所述握手消息中的版本信息調(diào)整之后,所述中間件將所述握手消息發(fā)送給所述客戶(hù)端,使得所述服務(wù)器可以采用版本調(diào)整后的通訊協(xié)議與所述客戶(hù)端通訊。
2.根據(jù)權(quán)利要求1所述的方法,其中所述中間件對(duì)所述握手消息中的服務(wù)器所采用的通訊協(xié)議的版本信息進(jìn)行調(diào)整的步驟包括: 所述中間件從所述服務(wù)器所采用通訊協(xié)議的版本信息中獲取服務(wù)器的能力標(biāo)志信息,所述服務(wù)器的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的工作特性; 所述中間件對(duì)獲取的所述服務(wù)器的能力標(biāo)志信息進(jìn)行調(diào)整,使得所述服務(wù)器所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同。
3.根據(jù)權(quán)利要求2所述的方法,其中所述服務(wù)器的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示 采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的一種工作特性。
4.根據(jù)權(quán)利要求1~3任一項(xiàng)所述的方法,所述方法還包括: 如果所述服務(wù)器采用的通訊協(xié)議的版本低于或等于所述中間件采用的通訊協(xié)議的版本,則所述中間件直接將所述握手消息發(fā)送給所述客戶(hù)端。
5.根據(jù)權(quán)利要求1~4任一項(xiàng)所述的方法,在所述中間件將所述握手消息發(fā)送給客戶(hù)端的步驟之后,所述方法還包括: 所述中間件接收所述客戶(hù)端向所述服務(wù)器發(fā)送的認(rèn)證消息,所述認(rèn)證消息包括:所述客戶(hù)端所采用通訊協(xié)議的版本信息; 所述中間件判斷所述客戶(hù)端所采用的通訊協(xié)議的版本是否高于所述中間件所采用的通訊協(xié)議的版本; 如果所述客戶(hù)端采用的通訊協(xié)議的版本高于所述中間件采用的通訊協(xié)議的版本,則所述中間件對(duì)所述認(rèn)證消息中客戶(hù)端所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得客戶(hù)端所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同; 在所述認(rèn)證消息中的版本信息調(diào)整之后,所述中間件將所述認(rèn)證消息發(fā)送給所述服務(wù)器,使得所述客戶(hù)端可以采用版本調(diào)整后的通訊協(xié)議與所述服務(wù)器通訊。
6.根據(jù)權(quán)利要求5所述的方法,其中所述中間件對(duì)所述認(rèn)證消息中的客戶(hù)端所采用的通訊協(xié)議的版本信息進(jìn)行調(diào)整的步驟包括: 所述中間件從所述客戶(hù)端所采用通訊協(xié)議的版本信息中獲取客戶(hù)端的能力標(biāo)志信息,所述客戶(hù)端的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的工作特性; 所述中間件對(duì)獲取的所述客戶(hù)端的能力標(biāo)志信息進(jìn)行調(diào)整,使得所述客戶(hù)端所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同。
7.根據(jù)權(quán)利要求6所述的方法,其中所述客戶(hù)端的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的客戶(hù)端所具有的一種工作特性。
8.一種兼容協(xié)議的裝置,包括: 接收模塊,用于接收服務(wù)器向客戶(hù)端發(fā)送的握手消息,所述握手消息包括:所述服務(wù)器所采用通訊協(xié)議的版本信息; 判斷模塊,用于根據(jù)所述握手消息中的版本信息,判斷所述服務(wù)器所采用的通訊協(xié)議的版本是否高于所述中間件所采用的通訊協(xié)議的版本; 調(diào)整模塊,用于如果所述服務(wù)器采用的通訊協(xié)議的版本高于所述中間件采用的通訊協(xié)議的版本,則對(duì)所述握手消息中服務(wù)器所采用通訊協(xié)議的版本信息進(jìn)行調(diào)整,使得服務(wù)器所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同;以及 發(fā)送模塊,用于在所述握手消息中的版本信息調(diào)整之后,將所述握手消息發(fā)送給所述客戶(hù)端,使得所述服務(wù)器可以采用版本調(diào)整后的通訊協(xié)議與所述客戶(hù)端通訊。
9.根據(jù)權(quán)利要求8所述的裝置,其中所述調(diào)整模塊包括: 獲取單元,用于從所述服務(wù)器所采用通訊協(xié)議的版本信息中獲取服務(wù)器的能力標(biāo)志信息,所述服務(wù)器的能力標(biāo)志信息用于表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的工作特性; 調(diào)整單元,用于對(duì)獲取的所述服務(wù)器的能力標(biāo)志信息進(jìn)行調(diào)整,使得所述服務(wù)器所采用通訊協(xié)議的版本與所述中間件所采用的通訊協(xié)議的版本相同。
10.根據(jù)權(quán)利要求9所述的`裝置,其中所述服務(wù)器的能力標(biāo)志信息包括一個(gè)或多個(gè)字符位,其中每個(gè)字符位表示采用當(dāng)前版本的通訊協(xié)議的服務(wù)器所具有的一種工作特性。
【文檔編號(hào)】H04L29/06GK103607376SQ201310522100
【公開(kāi)日】2014年2月26日 申請(qǐng)日期:2013年10月29日 優(yōu)先權(quán)日:2013年10月29日
【發(fā)明者】朱超, 陳飛, 王超 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司