本申請(qǐng)涉及互聯(lián)網(wǎng)
技術(shù)領(lǐng)域:
,特別涉及一種基于多連接的數(shù)據(jù)發(fā)送方法及裝置、一種基于多連接的數(shù)據(jù)接收方法及裝置。
背景技術(shù):
:目前,隨著互聯(lián)網(wǎng)的發(fā)展,越來(lái)越多的用戶(hù)或者企業(yè)采用互聯(lián)網(wǎng)收發(fā)數(shù)據(jù)。一般情況下,在發(fā)送端和接收端傳輸數(shù)據(jù)時(shí),需要在發(fā)送端和接收端建立一個(gè)數(shù)據(jù)連接,然后通過(guò)該數(shù)據(jù)連接傳輸目標(biāo)數(shù)據(jù),待傳輸完畢之后,再釋放該數(shù)據(jù)連接即可。技術(shù)實(shí)現(xiàn)要素:但是發(fā)明人在研究過(guò)程中發(fā)現(xiàn),現(xiàn)有技術(shù)在發(fā)送數(shù)據(jù)的時(shí)候,都是使用單連接的發(fā)送方式,即,僅僅在發(fā)送端和接收端之間建立一個(gè)數(shù)據(jù)連接來(lái)發(fā)送數(shù)據(jù),這就使得在網(wǎng)絡(luò)帶寬有限并且網(wǎng)絡(luò)延遲較大的情況下,很容易產(chǎn)生發(fā)送速度的波動(dòng);進(jìn)一步的,現(xiàn)有技術(shù)在發(fā)送目標(biāo)數(shù)據(jù)時(shí),如果數(shù)據(jù)量較大,還會(huì)占用較多的網(wǎng)絡(luò)資源和耗費(fèi)較多的時(shí)間。基于此,本申請(qǐng)所要解決的技術(shù)問(wèn)題是提供一種基于多連接的數(shù)據(jù)發(fā)送和接收方法,用以盡量避免現(xiàn)有技術(shù)中采用單連接的發(fā)送方式造成的發(fā)送速度容易產(chǎn)生波動(dòng)的現(xiàn)象,進(jìn)一步的,還提過(guò)批量壓縮的功能減少網(wǎng)絡(luò)資源和時(shí)間和消耗。本申請(qǐng)還提供了一種基于多連接的數(shù)據(jù)發(fā)送裝置,用以保證上述方法在實(shí)際中的實(shí)現(xiàn)及應(yīng)用。為了解決上述問(wèn)題,本申請(qǐng)公開(kāi)了一種基于多連接的數(shù)據(jù)發(fā)送方法,應(yīng)用于服務(wù)器上,該方法包括:多連接建立過(guò)程和數(shù)據(jù)發(fā)送過(guò)程,其中,所述多連接建立過(guò)程包括:響應(yīng)于客戶(hù)端發(fā)送的多連接的建立請(qǐng)求,生成與所述多連接唯一對(duì) 應(yīng)的會(huì)話(huà)標(biāo)識(shí);依據(jù)所述會(huì)話(huà)標(biāo)識(shí)建立與客戶(hù)端之間的多連接;所述數(shù)據(jù)發(fā)送過(guò)程包括:響應(yīng)于當(dāng)前提交的目標(biāo)數(shù)據(jù)流,將所述目標(biāo)數(shù)據(jù)流通過(guò)建立的所述多連接發(fā)送至所述客戶(hù)端。本申請(qǐng)公開(kāi)了一種基于多連接的數(shù)據(jù)接收方法,該方法應(yīng)用于客戶(hù)端,包括:多連接建立過(guò)程和數(shù)據(jù)接收過(guò)程,其中,所述多連接建立過(guò)程包括:向服務(wù)器發(fā)送多連接的建立請(qǐng)求;接收服務(wù)器返回的、與所述多連接唯一對(duì)應(yīng)的會(huì)話(huà)標(biāo)識(shí);依據(jù)所述會(huì)話(huà)標(biāo)識(shí)建立與服務(wù)器之間的多連接;所述數(shù)據(jù)接收過(guò)程包括:通過(guò)建立的所述多連接接收服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)流。本申請(qǐng)公開(kāi)了一種基于多連接的數(shù)據(jù)發(fā)送裝置,集成于服務(wù)器上,該裝置包括:第一多連接建立單元和數(shù)據(jù)發(fā)送單元,其中,所述第一多連接建立單元包括:生成會(huì)話(huà)標(biāo)識(shí)模塊,用于響應(yīng)于客戶(hù)端發(fā)送的多連接的建立請(qǐng)求,生成與所述多連接唯一對(duì)應(yīng)的會(huì)話(huà)標(biāo)識(shí);第一建立模塊,用于依據(jù)所述會(huì)話(huà)標(biāo)識(shí)建立與客戶(hù)端之間的多連接;所述數(shù)據(jù)發(fā)送單元包括數(shù)據(jù)發(fā)送模塊,所述數(shù)據(jù)發(fā)送模塊用于響應(yīng)于當(dāng)前提交的目標(biāo)數(shù)據(jù)流,將所述目標(biāo)數(shù)據(jù)流通過(guò)建立的所述多連接發(fā)送至所述客戶(hù)端。本申請(qǐng)公開(kāi)了一種基于多連接的數(shù)據(jù)接收方法,集成于客戶(hù)端上,包括:多連接建立單元和數(shù)據(jù)接收單元,其中,所述多連接建立單元包括:發(fā)送請(qǐng)求模塊,用于向服務(wù)器發(fā)送多連接的建立請(qǐng)求;接收會(huì)話(huà)標(biāo)識(shí)模塊,用于接收服務(wù)器返回的、與所述多連接唯一對(duì)應(yīng)的會(huì)話(huà)標(biāo)識(shí);第二建立模塊,用于依據(jù)所述會(huì)話(huà)標(biāo)識(shí)建立與服務(wù)器之間的多連接;所述數(shù)據(jù)接收單元包括:數(shù)據(jù)接收模塊,用于通過(guò)建立的所述多連接接收服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)流。與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):在本申請(qǐng)實(shí)施例中,服務(wù)器采用與客戶(hù)端之間的多連接發(fā)送即時(shí)的數(shù)據(jù)流,這樣的話(huà),即使多連接中當(dāng)前正在發(fā)送數(shù)據(jù)的連接的速度變慢,也可以采用該多連接中剩余連接來(lái)繼續(xù)發(fā)送數(shù)據(jù)流,從而可以彌補(bǔ)速度變慢的連接所帶來(lái)的波動(dòng),使得數(shù)據(jù)流的發(fā)送速度趨于平滑。進(jìn)一步的,在本實(shí)施例中,針對(duì)存儲(chǔ)緩沖區(qū)中的數(shù)據(jù),也是待存儲(chǔ)緩沖區(qū)的存儲(chǔ)空間滿(mǎn)了之后再批量壓縮數(shù)據(jù)流,從而更進(jìn)一步的減少了實(shí)際發(fā)送數(shù)據(jù)流的網(wǎng)絡(luò)流量,降低了網(wǎng)絡(luò)堵塞出現(xiàn)的可能性,使得數(shù)據(jù)鏈路的質(zhì)量得到了保證。當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品并不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。附圖說(shuō)明為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本申請(qǐng)的基于多連接的數(shù)據(jù)發(fā)送方法實(shí)施例的流程圖;圖2是本申請(qǐng)的基于多連接的數(shù)據(jù)接收方法實(shí)施例的流程圖;圖3是本申請(qǐng)的基于多連接的數(shù)據(jù)發(fā)送裝置實(shí)施例的結(jié)構(gòu)框圖;圖4是本申請(qǐng)的基于多連接的數(shù)據(jù)接收裝置實(shí)施例的結(jié)構(gòu)框圖。具體實(shí)施方式下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本 申請(qǐng)保護(hù)的范圍。本申請(qǐng)可用于眾多通用或?qū)S玫挠?jì)算裝置環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器裝置、包括以上任何裝置或設(shè)備的分布式計(jì)算環(huán)境等等。本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。參考圖1,示出了本申請(qǐng)一種基于多連接的數(shù)據(jù)發(fā)送方法實(shí)施例的流程圖,應(yīng)用于服務(wù)器上進(jìn)行數(shù)據(jù)發(fā)送,本實(shí)施例可以包括多連接建立過(guò)程和數(shù)據(jù)發(fā)送過(guò)程,其中,多連接建立過(guò)程包括步驟101~步驟102,數(shù)據(jù)發(fā)送過(guò)程包括步驟103,本實(shí)施例具體包括以下步驟:步驟101:響應(yīng)于客戶(hù)端發(fā)送的多連接的建立請(qǐng)求,生成與所述多連接唯一對(duì)應(yīng)的會(huì)話(huà)標(biāo)識(shí)。在本實(shí)施例中,多連接的數(shù)據(jù)發(fā)送指的是針對(duì)實(shí)時(shí)的數(shù)據(jù)流的多連接發(fā)送,也即,數(shù)據(jù)流會(huì)被切分到多個(gè)連接中去,可以被附加自定義的首部,到達(dá)接收端以后會(huì)進(jìn)行數(shù)據(jù)流的重組。本實(shí)施例應(yīng)用于發(fā)送端的發(fā)送組件,也即服務(wù)器(Server)。而和服務(wù)器交互用于通過(guò)多連接接收數(shù)據(jù)的接收組件,也即客戶(hù)端(Client)。首先,當(dāng)服務(wù)器運(yùn)行起來(lái)以后,會(huì)開(kāi)放一個(gè)端口,等待客戶(hù)端的連接,客戶(hù)端會(huì)向服務(wù)器發(fā)送多連接的建立請(qǐng)求,從而通過(guò)該建立請(qǐng)求來(lái)向服務(wù)器索取會(huì)話(huà)(Session)標(biāo)識(shí)??蛻?hù)端會(huì)先建立一個(gè)和服務(wù)器之間的協(xié)商連接,然后通過(guò)該協(xié)商連接來(lái)向服務(wù)器發(fā)送多連接的建立請(qǐng)求,可以在多連接的建立請(qǐng)求中攜帶多連接的個(gè)數(shù)信息,例如,4個(gè),那么加上之間的協(xié)商連接,客戶(hù)端和服務(wù)器之間將建立一共5個(gè)連接的多連接。在實(shí)際應(yīng)用中,服務(wù)器在建立和客戶(hù)端之間的協(xié)商連接后,會(huì)針對(duì)客 戶(hù)端需要建立的多連接,來(lái)生成一個(gè)與該多連接唯一對(duì)應(yīng)的會(huì)話(huà)標(biāo)識(shí),并將該會(huì)話(huà)標(biāo)識(shí)發(fā)送給客戶(hù)端,該會(huì)話(huà)即實(shí)際中發(fā)生數(shù)據(jù)流的管道。步驟102:依據(jù)所述會(huì)話(huà)標(biāo)識(shí)建立與客戶(hù)端之間的多連接。然后客戶(hù)端得到這個(gè)會(huì)話(huà)標(biāo)識(shí)以后會(huì)帶著自己的用戶(hù)信息以及會(huì)話(huà)標(biāo)識(shí)再向服務(wù)器發(fā)送啟動(dòng)剩下的4個(gè)連接的消息。服務(wù)器拿到客戶(hù)端發(fā)送的啟動(dòng)數(shù)據(jù)流的連接的消息以后,還可以將這個(gè)已經(jīng)建立好的多連接按照會(huì)話(huà)標(biāo)識(shí)分組通知給需要發(fā)送數(shù)據(jù)流的用戶(hù),這樣用戶(hù)也就能夠看到會(huì)話(huà)了,用戶(hù)只需要調(diào)用類(lèi)似寫(xiě)(write)和讀(read)函數(shù)進(jìn)行發(fā)送或讀取數(shù)據(jù)的操作就可以了??梢岳斫獾氖?,在多連接建立的過(guò)程中,多個(gè)帶有相同的會(huì)話(huà)標(biāo)識(shí)的連接(socket)會(huì)被分配到同一個(gè)會(huì)話(huà)(session)中,而用戶(hù)需要發(fā)送的數(shù)據(jù)流可以在服務(wù)器通過(guò)同一個(gè)session的某個(gè)socket發(fā)送到客戶(hù)端。在介紹完多連接的建立過(guò)程中,進(jìn)入數(shù)據(jù)發(fā)送流程,步驟103:響應(yīng)于當(dāng)前提交的目標(biāo)數(shù)據(jù)流,將所述目標(biāo)數(shù)據(jù)流通過(guò)建立的所述多連接發(fā)送至所述客戶(hù)端。因?yàn)榉?wù)器在成功和客戶(hù)端建立多連接之后,也會(huì)將該多連接對(duì)應(yīng)的會(huì)話(huà)標(biāo)識(shí)通知給用戶(hù),所以用戶(hù)可以直接使用服務(wù)器提供的write函數(shù)來(lái)向服務(wù)器提交數(shù)據(jù)流。該write函數(shù)的操作會(huì)將數(shù)據(jù)流的數(shù)據(jù)復(fù)制到服務(wù)器提供的緩沖區(qū)中。其中,在實(shí)際應(yīng)用中步驟103具體可以包括:步驟A1:響應(yīng)于當(dāng)前提交的目標(biāo)數(shù)據(jù)流,判斷用于存放目標(biāo)數(shù)據(jù)流的存儲(chǔ)緩沖區(qū)是否有足夠的存儲(chǔ)空間,如果是,則進(jìn)入步驟A2。在本步驟中,服務(wù)器采用了兩種緩沖區(qū)來(lái)存儲(chǔ)數(shù)據(jù)流。一個(gè)是接收用戶(hù)提交的數(shù)據(jù)流的雙緩沖buffer,叫做存儲(chǔ)緩沖區(qū)(CacheBuffer),另一個(gè)存放壓縮后的數(shù)據(jù)流發(fā)送buffer,叫做發(fā)送緩沖區(qū)。如果用戶(hù)當(dāng)前提交了目標(biāo)數(shù)據(jù)流,則服務(wù)器會(huì)先去試探當(dāng)前正在發(fā)送數(shù)據(jù)的連接對(duì)應(yīng)的存儲(chǔ)緩沖區(qū)是否有足夠的存儲(chǔ)空間或者是否可寫(xiě),如果存儲(chǔ)緩沖區(qū)中有足夠的存儲(chǔ)空間才會(huì)觸發(fā)后續(xù)寫(xiě)入數(shù)據(jù)流的步驟。其中,需要說(shuō)明的是, 本實(shí)施例中的多連接中的每一個(gè)連接都對(duì)應(yīng)一個(gè)存儲(chǔ)緩沖區(qū)和一個(gè)發(fā)送緩沖區(qū)。步驟A2:將所述目標(biāo)數(shù)據(jù)流存儲(chǔ)至所述存儲(chǔ)緩沖區(qū)中。如果存儲(chǔ)緩沖區(qū)可寫(xiě),就直接將目標(biāo)數(shù)據(jù)流存放到該存儲(chǔ)緩沖區(qū)中,另外還可以返回給用戶(hù)寫(xiě)入成功的信息。當(dāng)然,如果服務(wù)器判斷得到存儲(chǔ)緩沖區(qū)不可寫(xiě),那么可以返回給用戶(hù)暫時(shí)沒(méi)有更多的存儲(chǔ)空間,這種情況說(shuō)明用戶(hù)提交數(shù)據(jù)流的速度超過(guò)了數(shù)據(jù)流的發(fā)送速度,并且服務(wù)器可以繼續(xù)執(zhí)行步驟A1判斷存儲(chǔ)緩沖區(qū)是否可寫(xiě)。其中,步驟A2具體可以包括如下所示的步驟A21~A22:步驟A21:將所述目標(biāo)數(shù)據(jù)流中的目標(biāo)數(shù)據(jù)按照預(yù)先設(shè)置的第一數(shù)據(jù)格式添加第一數(shù)據(jù)頭。服務(wù)器在將數(shù)據(jù)流寫(xiě)入存儲(chǔ)緩沖區(qū)的過(guò)程中,可以對(duì)數(shù)據(jù)流做一次協(xié)議編碼,轉(zhuǎn)換為內(nèi)部發(fā)送的協(xié)議格式,編碼的過(guò)程就是在數(shù)據(jù)流前面添加一個(gè)首部,即第一數(shù)據(jù)頭。其中,第一數(shù)據(jù)頭可以包括:數(shù)據(jù)類(lèi)型type、數(shù)據(jù)長(zhǎng)度length和數(shù)據(jù)標(biāo)識(shí)MessageID,該數(shù)據(jù)類(lèi)型用于表示所述目標(biāo)數(shù)據(jù)是否進(jìn)行了切割,該數(shù)據(jù)長(zhǎng)度為一個(gè)目標(biāo)數(shù)據(jù)的長(zhǎng)度,該數(shù)據(jù)標(biāo)識(shí)用于按照各個(gè)目標(biāo)數(shù)據(jù)的順序唯一標(biāo)識(shí)目標(biāo)數(shù)據(jù)流中的一個(gè)目標(biāo)數(shù)據(jù)。參考表1所示,為一個(gè)第一數(shù)據(jù)頭的示例:表1數(shù)據(jù)類(lèi)型type數(shù)據(jù)長(zhǎng)度length數(shù)據(jù)標(biāo)識(shí)MessageID在表1中,對(duì)于數(shù)據(jù)類(lèi)型type,如果小于2MB的認(rèn)為是小記錄,直接發(fā)送該目標(biāo)數(shù)據(jù)即可,而如果大于2MB就可以按照2MB對(duì)目標(biāo)數(shù)據(jù)進(jìn)行切割。對(duì)于大記錄,第一個(gè)切割的數(shù)據(jù)塊的數(shù)據(jù)類(lèi)型type的值可以為9,中間的數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)類(lèi)型type的值可以為10,直到最后一個(gè)數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)類(lèi)型type的值為11,這些值可以幫助后續(xù)在客戶(hù)端進(jìn)行大記錄的數(shù)據(jù)流重組的時(shí)候進(jìn)行校驗(yàn)。而對(duì)于小記錄,數(shù)據(jù)長(zhǎng)度length的值可以就是自身的長(zhǎng)度,而對(duì)于大記錄,數(shù)據(jù)長(zhǎng)度length可以為大記錄對(duì)應(yīng)的總長(zhǎng)度。消息標(biāo)識(shí)MessageID則主要用于對(duì)每一個(gè)目標(biāo)數(shù)據(jù)進(jìn) 行標(biāo)示,用來(lái)后續(xù)在接收端對(duì)目標(biāo)數(shù)據(jù)進(jìn)行重組時(shí)排序使用。數(shù)據(jù)類(lèi)型type的長(zhǎng)度可以為4bit,數(shù)據(jù)長(zhǎng)度length的值可以為28bit,而消息標(biāo)識(shí)的長(zhǎng)度可以為32bit。步驟A22:將添加第一數(shù)據(jù)頭后的目標(biāo)數(shù)據(jù)存儲(chǔ)至所述存儲(chǔ)緩沖區(qū)中。在對(duì)目標(biāo)數(shù)據(jù)添加首部之后,將添加首部的目標(biāo)數(shù)據(jù)存儲(chǔ)至存儲(chǔ)緩沖區(qū)中。在將目標(biāo)數(shù)據(jù)存儲(chǔ)至存儲(chǔ)緩沖區(qū)之后,接著進(jìn)入步驟A3:判斷當(dāng)前時(shí)間是否已經(jīng)結(jié)束預(yù)設(shè)的休眠時(shí)間周期,如果是,進(jìn)入步驟A4。在本實(shí)施例中,服務(wù)器可以采用定時(shí)器流程,即,預(yù)先設(shè)置一個(gè)休眠時(shí)間周期,例如,5ms,則每隔5ms的休眠事件,服務(wù)器就開(kāi)始發(fā)送目標(biāo)數(shù)據(jù)流,在這種情況下,如果用戶(hù)將目標(biāo)數(shù)據(jù)寫(xiě)入了存儲(chǔ)緩沖區(qū)中,就可以判斷當(dāng)前時(shí)間是否已經(jīng)結(jié)束預(yù)設(shè)的休眠時(shí)間周期,例如,是否到達(dá)5ms的休眠時(shí)間,如果到達(dá)了,就可以對(duì)存儲(chǔ)緩沖區(qū)中的目標(biāo)數(shù)據(jù)流進(jìn)行壓縮,進(jìn)而再將壓縮后的目標(biāo)數(shù)據(jù)流存儲(chǔ)至發(fā)送緩沖區(qū)中。在本實(shí)施例中,因?yàn)榇鎯?chǔ)緩沖區(qū)采用的是雙緩沖buffer,即,存儲(chǔ)緩沖區(qū)實(shí)際上有兩個(gè)子緩沖區(qū),這兩個(gè)子緩沖區(qū)在用戶(hù)寫(xiě)入目標(biāo)數(shù)據(jù)流的過(guò)程中互相切換。那么當(dāng)休眠時(shí)間周期到達(dá)時(shí),服務(wù)器會(huì)先讀取當(dāng)前指向的那個(gè)子緩沖區(qū),看其中是否目標(biāo)數(shù)據(jù)流,如果有目標(biāo)數(shù)據(jù)流并且存儲(chǔ)空間還要剩余的話(huà),就對(duì)該子緩沖區(qū)中的目標(biāo)數(shù)據(jù)流進(jìn)行壓縮,進(jìn)而發(fā)送壓縮后的目標(biāo)數(shù)據(jù)流,然后等待下一個(gè)休眠時(shí)間周期的到來(lái)。而如果當(dāng)前指向的子緩沖區(qū)中有目標(biāo)數(shù)據(jù)流且存儲(chǔ)空間已滿(mǎn),則將該子緩沖區(qū)中的目標(biāo)數(shù)據(jù)流進(jìn)行壓縮并發(fā)送之后,還需要去另一個(gè)子緩沖區(qū)中查看是否有目標(biāo)數(shù)據(jù)流需要進(jìn)行壓縮,以此類(lèi)推,如果在切換兩個(gè)子緩沖區(qū)的過(guò)程中發(fā)現(xiàn)兩個(gè)子緩沖區(qū)中一直有目標(biāo)數(shù)據(jù)流等待壓縮,說(shuō)明用戶(hù)寫(xiě)入目標(biāo)數(shù)據(jù)流的速度很快,因此在這種情況下,就可以連續(xù)切換子緩沖區(qū)進(jìn)行目標(biāo)數(shù)據(jù)流的壓縮和發(fā)送,而不考慮休眠時(shí)間周期是否到來(lái)。步驟A4:將存儲(chǔ)緩沖區(qū)中的目標(biāo)數(shù)據(jù)流進(jìn)行壓縮。步驟A5:將壓縮后的目標(biāo)數(shù)據(jù)流存儲(chǔ)至發(fā)送緩沖區(qū)中。可以理解的是,在對(duì)存儲(chǔ)緩沖區(qū)的數(shù)據(jù)進(jìn)行壓縮之前,服務(wù)器可以先判斷發(fā)送緩沖區(qū)中是否有足夠的存儲(chǔ)空間容納壓縮后的數(shù)據(jù),如果有再進(jìn)行壓縮,以便后續(xù)從發(fā)送緩沖區(qū)中發(fā)送數(shù)據(jù)。如果發(fā)送緩沖區(qū)中沒(méi)有足夠的存儲(chǔ)空間,還是說(shuō)明用戶(hù)產(chǎn)生數(shù)據(jù)的速度超過(guò)了網(wǎng)絡(luò)速度,會(huì)進(jìn)行阻塞。具體的,步驟A5可以包括:步驟A51:將所述壓縮后的目標(biāo)數(shù)據(jù)流中的壓縮數(shù)據(jù),按照預(yù)先設(shè)置的第二數(shù)據(jù)格式添加第二數(shù)據(jù)頭;其中,所述第二數(shù)據(jù)頭包括:壓縮標(biāo)志、壓縮后的數(shù)據(jù)長(zhǎng)度、壓縮前的源長(zhǎng)度和壓縮后的數(shù)據(jù)內(nèi)容。在將壓縮后的目標(biāo)數(shù)據(jù)流中的壓縮數(shù)據(jù)存儲(chǔ)至發(fā)送緩沖區(qū)之前,還可以進(jìn)行一次編碼,即為壓縮后的數(shù)據(jù)添加第二數(shù)據(jù)頭。其中,參考表2所示,為第二數(shù)據(jù)頭的格式示例:表2其中,第二數(shù)據(jù)頭包括壓縮標(biāo)識(shí)Type,用來(lái)標(biāo)示對(duì)應(yīng)的目標(biāo)數(shù)據(jù)是否是壓縮數(shù)據(jù),還可以設(shè)置默認(rèn)情況,如果目標(biāo)數(shù)據(jù)的長(zhǎng)度小于500bit就是未壓縮數(shù)據(jù)。壓縮后的長(zhǎng)度CompressLen用來(lái)表示目標(biāo)數(shù)據(jù)壓縮后的數(shù)據(jù)長(zhǎng)度,壓縮前的源長(zhǎng)度srcLen則表示對(duì)應(yīng)的未壓縮數(shù)據(jù)的長(zhǎng)度,壓縮后的數(shù)據(jù)內(nèi)容Data即是壓縮后的數(shù)據(jù)內(nèi)容。步驟A52:將添加第二數(shù)據(jù)頭后的壓縮數(shù)據(jù)存儲(chǔ)至所述發(fā)送緩沖區(qū)中。在添加第二數(shù)據(jù)頭之后,將添加第二數(shù)據(jù)頭的壓縮數(shù)據(jù)存儲(chǔ)至發(fā)送緩沖區(qū)中,以便將壓縮后的數(shù)據(jù)發(fā)送給客戶(hù)端后,客戶(hù)端可以按照表1和表2的編碼方式進(jìn)行目標(biāo)數(shù)據(jù)的接收和解壓。接著進(jìn)入步驟A6:判斷所述發(fā)送緩沖區(qū)的存儲(chǔ)空間是否用完,如果是,則進(jìn)入步驟A7。在將數(shù)據(jù)壓縮后存儲(chǔ)至發(fā)送緩沖區(qū)后,判斷發(fā)送緩沖區(qū)的存儲(chǔ)空間是否已滿(mǎn),如果滿(mǎn)了,再一并將發(fā)送緩沖區(qū)中的壓縮數(shù)據(jù)一起發(fā)送給客戶(hù) 端,如果沒(méi)有滿(mǎn),可以繼續(xù)執(zhí)行對(duì)存儲(chǔ)緩沖區(qū)中的數(shù)據(jù)進(jìn)行壓縮的步驟。步驟A7:將所述目標(biāo)數(shù)據(jù)流通過(guò)建立的所述多連接發(fā)送至所述客戶(hù)端。具體的,在將發(fā)送緩沖區(qū)中的目標(biāo)數(shù)據(jù)流通過(guò)多連接發(fā)送給客戶(hù)端的時(shí)候,可以先通過(guò)多連接中最先建立的第一個(gè)連接來(lái)發(fā)送目標(biāo)數(shù)據(jù)流,如果第一個(gè)連接發(fā)送緩慢再試探該多連接中的其他連接是否可用,如果可用再通過(guò)其他連接發(fā)送目標(biāo)數(shù)據(jù)流。因?yàn)楸旧暾?qǐng)實(shí)施例中的多連接統(tǒng)一只有一個(gè)會(huì)話(huà)標(biāo)識(shí),所以不管通過(guò)該會(huì)話(huà)標(biāo)識(shí)對(duì)應(yīng)的哪一個(gè)連接向客戶(hù)端發(fā)送數(shù)據(jù),都能保證客戶(hù)端在接收到數(shù)據(jù)之后的連貫性。具體的,步驟A7可以包括步驟A71~步驟A73:步驟A71:將所述目標(biāo)數(shù)據(jù)流通過(guò)所述多連接中最先建立的第一個(gè)連接確定為當(dāng)前連接,將所述目標(biāo)數(shù)據(jù)流通過(guò)所述當(dāng)前連接發(fā)送至所述客戶(hù)端。步驟A72:在發(fā)送所述目標(biāo)數(shù)據(jù)流的過(guò)程中,判斷所述當(dāng)前連接對(duì)應(yīng)的發(fā)送緩沖區(qū)是否用完,如果否,則繼續(xù)將所述目標(biāo)數(shù)據(jù)流通過(guò)所述當(dāng)前連接發(fā)送至所述客戶(hù)端;如果是,則進(jìn)入步驟A73。在本實(shí)施例中,判斷當(dāng)前發(fā)送目標(biāo)數(shù)據(jù)流的連接是否可以繼續(xù)發(fā)送,可以通過(guò)用戶(hù)是否還能成功向該連接對(duì)應(yīng)的存儲(chǔ)緩沖區(qū)中寫(xiě)入目標(biāo)數(shù)據(jù)流來(lái)實(shí)現(xiàn)。如果用戶(hù)無(wú)法成功向該連接對(duì)應(yīng)的存儲(chǔ)緩沖區(qū)中寫(xiě)入目標(biāo)數(shù)據(jù)流,則說(shuō)明當(dāng)前連接發(fā)送數(shù)據(jù)的速度已經(jīng)比較緩慢或者已經(jīng)不可用了,在這種情況下,就從當(dāng)前連接切換到同一個(gè)多連接中的其他連接,來(lái)試探該其他連接對(duì)應(yīng)的存儲(chǔ)緩沖區(qū)是否可以寫(xiě)入目標(biāo)數(shù)據(jù)流,如果可以寫(xiě)入,則可以采用可寫(xiě)入目標(biāo)數(shù)據(jù)流的該其他連接來(lái)發(fā)送目標(biāo)數(shù)據(jù)流。步驟A73:選擇所述多連接中剩余的其他任意一個(gè)剩余連接作為當(dāng)前連接,并執(zhí)行將所述目標(biāo)數(shù)據(jù)流通過(guò)所述當(dāng)前連接發(fā)送至所述客戶(hù)端的步驟,直至所述目標(biāo)數(shù)據(jù)流成功發(fā)送至客戶(hù)端,或者,所述多連接中的全部連接都判斷完畢。當(dāng)然,可以理解的是,因?yàn)榉?wù)器發(fā)送目標(biāo)數(shù)據(jù)流是一個(gè)定時(shí)器流程,因此,在執(zhí)行步驟103的過(guò)程中,還可以包括:步驟104:判斷發(fā)送所述目標(biāo)數(shù)據(jù)流的時(shí)間長(zhǎng)度是否達(dá)到預(yù)先設(shè)置的發(fā)送時(shí)間閾值,如果是,則進(jìn)入步驟105。服務(wù)器判斷發(fā)送目標(biāo)數(shù)據(jù)流的持續(xù)時(shí)間長(zhǎng)度是否已經(jīng)達(dá)到了預(yù)先設(shè)置的發(fā)送時(shí)間閾值,例如0.5ms,如果已經(jīng)持續(xù)發(fā)送了0.5ms,則可以暫停發(fā)送目標(biāo)數(shù)據(jù)流進(jìn)行休眠,例如可以暫停0.5ms,然后再繼續(xù)執(zhí)行發(fā)送目標(biāo)數(shù)據(jù)流的步驟。步驟105:暫停所述目標(biāo)數(shù)據(jù)流的發(fā)送,并當(dāng)暫停時(shí)間到達(dá)所述發(fā)送時(shí)間閾值時(shí),繼續(xù)執(zhí)行將所述目標(biāo)數(shù)據(jù)流通過(guò)建立的所述多連接發(fā)送至所述客戶(hù)端的步驟。在本實(shí)施例中,服務(wù)器采用與客戶(hù)端之間的多連接發(fā)送即時(shí)的數(shù)據(jù)流,這樣的話(huà),即使多連接中當(dāng)前正在發(fā)送數(shù)據(jù)的連接的速度變慢,也可以采用該多連接中剩余連接來(lái)繼續(xù)發(fā)送數(shù)據(jù)流,從而可以彌補(bǔ)速度變慢的連接所帶來(lái)的波動(dòng),使得數(shù)據(jù)流的發(fā)送速度趨于平滑。進(jìn)一步的,在本實(shí)施例中,針對(duì)存儲(chǔ)緩沖區(qū)中的數(shù)據(jù),也是待休眠時(shí)間周期到達(dá)之后再批量壓縮數(shù)據(jù)流,從而更進(jìn)一步的減少了實(shí)際發(fā)送數(shù)據(jù)流的網(wǎng)絡(luò)流量,降低了網(wǎng)絡(luò)堵塞出現(xiàn)的可能性,使得數(shù)據(jù)鏈路的質(zhì)量得到了保證。參考圖2,示出了本申請(qǐng)一種基于多連接的數(shù)據(jù)接收方法實(shí)施例的流程圖,應(yīng)用于客戶(hù)端上進(jìn)行數(shù)據(jù)接收,本實(shí)施例可以包括多連接建立過(guò)程和數(shù)據(jù)接收過(guò)程,其中,多連接建立過(guò)程包括步驟201~步驟203,數(shù)據(jù)發(fā)送過(guò)程包括步驟204,本實(shí)施例具體包括以下步驟:步驟201:向服務(wù)器發(fā)送多連接的建立請(qǐng)求。在本申請(qǐng)實(shí)施例中,運(yùn)行在接收端的接收組件,可以稱(chēng)為客戶(hù)端(Client)。具體客戶(hù)端和服務(wù)器之間建立多連接的過(guò)程可以參考步驟101~步驟102所示,在此不再贅述。步驟202:接收服務(wù)器返回的、與所述多連接唯一對(duì)應(yīng)的會(huì)話(huà)標(biāo)識(shí)。步驟203:依據(jù)所述會(huì)話(huà)標(biāo)識(shí)建立與服務(wù)器之間的多連接。在建立與服務(wù)器之間的多連接之后,進(jìn)入步驟204:通過(guò)建立的所述多連接接收服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)流??蛻?hù)端通過(guò)與服務(wù)器之間的多連接來(lái)接收服務(wù)器向客戶(hù)端發(fā)送的目標(biāo)數(shù)據(jù)流。具體的,步驟204具體可以為步驟B1:步驟B1:通過(guò)建立的多連接中的任意一個(gè)當(dāng)前連接接收服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)流。具體的,因?yàn)榉?wù)器會(huì)選擇一個(gè)連接來(lái)發(fā)送壓縮后的目標(biāo)數(shù)據(jù)流,因此,客戶(hù)端也相應(yīng)通過(guò)該連接來(lái)從服務(wù)器接收壓縮后的目標(biāo)數(shù)據(jù)流,再進(jìn)行解壓從而得到原始的目標(biāo)數(shù)據(jù)流。具體的,客戶(hù)端在解壓目標(biāo)數(shù)據(jù)流之后,在步驟B1之后還可以包括:步驟B2:依據(jù)所述目標(biāo)數(shù)據(jù)流中的目標(biāo)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),按照先后順序組合所述目標(biāo)數(shù)據(jù)。具體的,因?yàn)橄⒖赡軙?huì)在服務(wù)器側(cè)分發(fā)到多連接中不同的連接當(dāng)中,因此需要客戶(hù)端根據(jù)數(shù)據(jù)標(biāo)識(shí)對(duì)目標(biāo)數(shù)據(jù)進(jìn)行重新的排序。因?yàn)榻鈮汉蟮哪繕?biāo)數(shù)據(jù)流中的目標(biāo)數(shù)據(jù)具有第一數(shù)據(jù)頭,而第一數(shù)據(jù)頭又包括了數(shù)據(jù)類(lèi)型、數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)標(biāo)識(shí),因此,客戶(hù)端可以按照目標(biāo)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),來(lái)按照目標(biāo)數(shù)據(jù)流本來(lái)的數(shù)據(jù)先后順序來(lái)組合目標(biāo)數(shù)據(jù)。例如,客戶(hù)端依次接收到了四個(gè)目標(biāo)數(shù)據(jù),這四個(gè)目標(biāo)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)依次為:2、3、1和4,那么最后將按照1、2、3和4的順序來(lái)組合這個(gè)四個(gè)目標(biāo)數(shù)據(jù)。為了保證在服務(wù)器和客戶(hù)端之間的目標(biāo)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)是相同的,客戶(hù)端和服務(wù)器關(guān)于數(shù)據(jù)標(biāo)識(shí)的生成器是一樣的,初始值也都為0,因此服務(wù)器在發(fā)送目標(biāo)數(shù)據(jù)流的時(shí)候會(huì)將數(shù)據(jù)標(biāo)識(shí)依次加1然后編碼進(jìn)去,而客戶(hù)端在接收的時(shí)候每讀取一個(gè)目標(biāo)數(shù)據(jù)會(huì)將數(shù)據(jù)標(biāo)識(shí)加1,這樣就能保證在服務(wù)器和客戶(hù)端之間目標(biāo)數(shù)據(jù)的一致性。步驟B3:將組合好的目標(biāo)數(shù)據(jù)顯示給用戶(hù)。最后將組合好的目標(biāo)數(shù)據(jù)顯示給用戶(hù)供用戶(hù)讀取??梢岳斫獾氖牵趯?shí)際應(yīng)用中,如果客戶(hù)端沒(méi)有接收到某個(gè)數(shù)據(jù)標(biāo)識(shí)的目標(biāo)數(shù)據(jù),或者接收到的目標(biāo)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)不連續(xù),則可以確定有目標(biāo)數(shù)據(jù)丟失了,可以進(jìn)行報(bào)錯(cuò)處理等。具體的,在客戶(hù)端也可以劃分出兩個(gè)緩沖區(qū)來(lái)接收目標(biāo)數(shù)據(jù),那么,步驟B1具體可以包括:步驟C1:響應(yīng)于服務(wù)器通過(guò)建立的多連接中的任意一個(gè)當(dāng)前連接發(fā)送的、壓縮后的目標(biāo)數(shù)據(jù)流,判斷用于存放壓縮后的目標(biāo)數(shù)據(jù)流的壓縮緩沖區(qū)是否有足夠的存儲(chǔ)空間,如果是,則進(jìn)入步驟C2。客戶(hù)端如果當(dāng)前探測(cè)到服務(wù)器發(fā)送了壓縮后的目標(biāo)數(shù)據(jù)流,則判斷用于存放壓縮后的目標(biāo)數(shù)據(jù)流的壓縮緩沖區(qū)是否有足夠的存儲(chǔ)空間,如果有,則將壓縮后的目標(biāo)數(shù)據(jù)流存儲(chǔ)至壓縮緩沖區(qū)中。如果沒(méi)有,則可以等待下一次對(duì)存儲(chǔ)緩沖區(qū)的試探。其中,壓縮緩沖區(qū)用于在客戶(hù)端存儲(chǔ)接收到的壓縮后的目標(biāo)數(shù)據(jù)。步驟C2:將所述壓縮后的目標(biāo)數(shù)據(jù)流存儲(chǔ)至所述壓縮緩沖區(qū)中。步驟C3:判斷所述壓縮緩沖區(qū)的存儲(chǔ)空間是否用完,如果是,則進(jìn)入步驟C4。接著判斷壓縮緩沖區(qū)的存儲(chǔ)空間是否已滿(mǎn),如果壓縮緩沖區(qū)中的存儲(chǔ)空間滿(mǎn)了,則一次性的將壓縮緩沖區(qū)中的目標(biāo)數(shù)據(jù)流進(jìn)行解壓,并將解壓后的目標(biāo)數(shù)據(jù)存儲(chǔ)至緩存緩沖區(qū)中。該緩存緩沖區(qū)用于在客戶(hù)端存儲(chǔ)解壓后的數(shù)據(jù)。步驟C4:將所述壓縮緩沖區(qū)中壓縮后的目標(biāo)數(shù)據(jù)流進(jìn)行解壓后存儲(chǔ)至緩存緩沖區(qū)中。因?yàn)樵诜?wù)器端壓縮后的目標(biāo)數(shù)據(jù)添加了第二數(shù)據(jù)頭,因此,客戶(hù)端在接收到服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)流后,可以讀取壓縮后的壓縮數(shù)據(jù)的第二數(shù)據(jù)頭,從而得到壓縮前的源長(zhǎng)度,來(lái)判斷緩存緩沖區(qū)中的存儲(chǔ)空間是否可以容納解壓后的數(shù)據(jù),如果可以再對(duì)壓縮緩沖區(qū)中的目標(biāo)數(shù)據(jù)進(jìn)行解壓。其中,步驟C4具體可以包括:步驟C41:讀取所述壓縮后的目標(biāo)數(shù)據(jù)流中的壓縮數(shù)據(jù)的第二數(shù)據(jù)頭。首先讀取壓縮后的目標(biāo)數(shù)據(jù)流中的壓縮數(shù)據(jù)的第二數(shù)據(jù)頭,來(lái)獲取到壓縮數(shù)據(jù)的壓縮前的源長(zhǎng)度。步驟C42:判斷所述緩存緩沖區(qū)的存儲(chǔ)空間是否大于所述壓縮數(shù)據(jù)的壓縮前的源長(zhǎng)度,如果是,則進(jìn)入步驟B43。將緩存緩沖區(qū)中的存儲(chǔ)空間大小于壓縮前的源長(zhǎng)度進(jìn)行對(duì)比,如果緩存緩沖區(qū)的存儲(chǔ)空間足夠容納壓縮前的目標(biāo)數(shù)據(jù),則執(zhí)行步驟C43。步驟C43:將壓縮后的目標(biāo)數(shù)據(jù)流進(jìn)行解壓,并將解壓后的目標(biāo)數(shù)據(jù)流存儲(chǔ)至緩存緩沖區(qū)中。在本申請(qǐng)實(shí)施例中,服務(wù)器采用與客戶(hù)端之間的多連接發(fā)送即時(shí)的數(shù)據(jù)流,而客戶(hù)端也采用多連接來(lái)接收數(shù)據(jù)流,這樣的話(huà),即使多連接中當(dāng)前正在接收數(shù)據(jù)的連接的速度變慢,客戶(hù)端也可以相應(yīng)的采用服務(wù)器選擇的多連接中的其他剩余連接來(lái)繼續(xù)接收數(shù)據(jù)流,從而可以彌補(bǔ)速度變慢的連接所帶來(lái)的波動(dòng),使得數(shù)據(jù)流的接收速度趨于平滑。進(jìn)一步的,在本實(shí)施例中,針對(duì)壓縮緩沖區(qū)中的數(shù)據(jù),也是待壓縮緩沖區(qū)的存儲(chǔ)空間滿(mǎn)了之后再批量解壓縮數(shù)據(jù)流,從而更進(jìn)一步的降低了網(wǎng)絡(luò)堵塞出現(xiàn)的可能性,使得數(shù)據(jù)鏈路的質(zhì)量得到了保證。對(duì)于前述的方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本申請(qǐng)所必須的。與上述本申請(qǐng)一種基于多連接的數(shù)據(jù)發(fā)送方法實(shí)施例所提供的方法相對(duì)應(yīng),參見(jiàn)圖3,本申請(qǐng)還提供了一種基于多連接的數(shù)據(jù)發(fā)送裝置實(shí)施例,在本實(shí)施例中,該裝置集成于服務(wù)器上,本實(shí)施例可以包括:第一多連接建立單元30和數(shù)據(jù)發(fā)送單元31,其中,所述第一多連接建立單元30可以包括:生成會(huì)話(huà)標(biāo)識(shí)模塊301,用于響應(yīng)于客戶(hù)端發(fā)送的多連接的建立請(qǐng)求,生成與所述多連接唯一對(duì)應(yīng)的會(huì)話(huà)標(biāo)識(shí);第一建立模塊302,用于依據(jù)所述會(huì)話(huà)標(biāo)識(shí)建立與客戶(hù)端之間的多連 接;所述數(shù)據(jù)發(fā)送單元31可以包括數(shù)據(jù)發(fā)送模塊311,所述數(shù)據(jù)發(fā)送模塊用于響應(yīng)于當(dāng)前提交的目標(biāo)數(shù)據(jù)流,將所述目標(biāo)數(shù)據(jù)流通過(guò)建立的所述多連接發(fā)送至所述客戶(hù)端。其中,所述數(shù)據(jù)發(fā)送模塊311,具體可以包括:第一判斷子模塊,用于響應(yīng)于當(dāng)前提交的目標(biāo)數(shù)據(jù)流,判斷用于存放目標(biāo)數(shù)據(jù)流的存儲(chǔ)緩沖區(qū)是否有足夠的存儲(chǔ)空間;第一存儲(chǔ)子模塊,用于在所述判斷模塊的結(jié)果為是的情況下,將所述目標(biāo)數(shù)據(jù)流存儲(chǔ)至所述存儲(chǔ)緩沖區(qū)中;第二判斷子模塊,用于判斷當(dāng)前時(shí)間是否已經(jīng)結(jié)束預(yù)設(shè)的休眠時(shí)間周期;壓縮子模塊,用于在所述第二判斷模塊的結(jié)果為是的情況下,將所述存儲(chǔ)緩沖區(qū)中的目標(biāo)數(shù)據(jù)流進(jìn)行壓縮;第二存儲(chǔ)子模塊,用于將所述壓縮模塊壓縮后的目標(biāo)數(shù)據(jù)流存儲(chǔ)至發(fā)送緩沖區(qū)中;和,第一發(fā)送子模塊,用于將所述發(fā)送緩沖區(qū)中壓縮后的目標(biāo)數(shù)據(jù)流通過(guò)建立的所述多連接發(fā)送至所述客戶(hù)端。其中,第一存儲(chǔ)子模塊具體可以包括:第一添加子模塊,用于將所述目標(biāo)數(shù)據(jù)流中的目標(biāo)數(shù)據(jù)按照預(yù)先設(shè)置的第一數(shù)據(jù)格式添加第一數(shù)據(jù)頭;其中,所述第一數(shù)據(jù)頭包括:數(shù)據(jù)類(lèi)型、數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)標(biāo)識(shí),所述數(shù)據(jù)類(lèi)型用于表示所述目標(biāo)數(shù)據(jù)是否進(jìn)行了切割,所述數(shù)據(jù)長(zhǎng)度為一個(gè)目標(biāo)數(shù)據(jù)的長(zhǎng)度,所述數(shù)據(jù)標(biāo)識(shí)用于按照各個(gè)目標(biāo)數(shù)據(jù)的順序唯一標(biāo)識(shí)所述目標(biāo)數(shù)據(jù)流中的一個(gè)目標(biāo)數(shù)據(jù);和,第三存儲(chǔ)子模塊,用于將添加第一數(shù)據(jù)頭后的目標(biāo)數(shù)據(jù)存儲(chǔ)至所述存儲(chǔ)緩沖區(qū)中。其中,第二存儲(chǔ)子模塊具體可以包括:第二添加子模塊,用于將所述壓縮后的目標(biāo)數(shù)據(jù)流中的壓縮數(shù)據(jù),按照預(yù)先設(shè)置的第二數(shù)據(jù)格式添加第二數(shù)據(jù)頭;其中,所述第二數(shù)據(jù)頭包括:壓縮標(biāo)志、壓縮后的數(shù)據(jù)長(zhǎng)度、壓縮前的源長(zhǎng)度和壓縮后的數(shù)據(jù)內(nèi)容;和,第四存儲(chǔ)子模塊,用于將添加第二數(shù)據(jù)頭后的壓縮數(shù)據(jù)存儲(chǔ)至所述發(fā)送緩沖區(qū)中。所述發(fā)送模塊包括:確定子模塊,用于將所述目標(biāo)數(shù)據(jù)流通過(guò)所述多連接中最先建立的第一個(gè)連接確定為當(dāng)前連接;其中,需要說(shuō)明的是,本實(shí)施例中的多連接中的每一個(gè)連接都對(duì)應(yīng)一個(gè)存儲(chǔ)緩沖區(qū)和一個(gè)發(fā)送緩沖區(qū);第二發(fā)送子模塊,用于將所述目標(biāo)數(shù)據(jù)流通過(guò)所述當(dāng)前連接發(fā)送至所述客戶(hù)端;第三判斷子模塊,用于在發(fā)送所述目標(biāo)數(shù)據(jù)流的過(guò)程中,判斷所述當(dāng)前連接對(duì)應(yīng)的存儲(chǔ)緩沖區(qū)是否寫(xiě)入目標(biāo)數(shù)據(jù)流失?。坏谝挥|發(fā)子模塊,用于在所述判斷子模塊的結(jié)果為否的情況下,觸發(fā)所述發(fā)送子模塊;選擇子模塊,用于在所述判斷子模塊的結(jié)果為是的情況下,選擇所述多連接中剩余的其他任意一個(gè)剩余連接作為當(dāng)前連接,并觸發(fā)所述發(fā)送子模塊,直至所述目標(biāo)數(shù)據(jù)流成功發(fā)送至客戶(hù)端,或者,所述多連接中的全部連接都判斷完畢。其中,數(shù)據(jù)發(fā)送單元31還可以包括:判斷模塊,用于判斷發(fā)送所述目標(biāo)數(shù)據(jù)流的時(shí)間長(zhǎng)度是否達(dá)到預(yù)先設(shè)置的發(fā)送時(shí)間閾值;暫停模塊,用于在所述判斷模塊的結(jié)果為是的情況下,暫停所述目標(biāo)數(shù)據(jù)流的發(fā)送;和,觸發(fā)模塊,用于當(dāng)暫停時(shí)間到達(dá)所述發(fā)送時(shí)間閾值時(shí),觸發(fā)所述數(shù)據(jù)發(fā)送模塊。本實(shí)施例中的服務(wù)器采用與客戶(hù)端之間的多連接發(fā)送即時(shí)的數(shù)據(jù)流,這樣的話(huà),即使多連接中當(dāng)前正在發(fā)送數(shù)據(jù)的連接的速度變慢,也可以采用該多連接中剩余連接來(lái)繼續(xù)發(fā)送數(shù)據(jù)流,從而可以彌補(bǔ)速度變慢的連接所帶來(lái)的波動(dòng),使得數(shù)據(jù)流的發(fā)送速度趨于平滑。進(jìn)一步的,在本實(shí)施例中,針對(duì)存儲(chǔ)緩沖區(qū)中的數(shù)據(jù),也是休眠時(shí)間周期到達(dá)之后再批量壓縮數(shù)據(jù)流,從而更進(jìn)一步的減少了實(shí)際發(fā)送數(shù)據(jù)流的網(wǎng)絡(luò)流量,降低了網(wǎng)絡(luò)堵塞出現(xiàn)的可能性,使得數(shù)據(jù)鏈路的質(zhì)量得到了保證。與上述本申請(qǐng)一種基于多連接的數(shù)據(jù)接收方法實(shí)施例所提供的方法相對(duì)應(yīng),參見(jiàn)圖4,本申請(qǐng)還提供了一種基于多連接的數(shù)據(jù)接收裝置實(shí)施例,在本實(shí)施例中,該裝置集成于客戶(hù)端上,本實(shí)施例可以包括:包括: 第二多連接建立單元40和數(shù)據(jù)接收單元41,其中,所述第二多連接建立單元40可以包括:發(fā)送請(qǐng)求模塊401,用于向服務(wù)器發(fā)送多連接的建立請(qǐng)求;接收會(huì)話(huà)標(biāo)識(shí)模塊402,用于接收服務(wù)器返回的、與所述多連接唯一對(duì)應(yīng)的會(huì)話(huà)標(biāo)識(shí);和,第二建立模塊403,用于依據(jù)所述會(huì)話(huà)標(biāo)識(shí)建立與服務(wù)器之間的多連接;所述多連接與所述會(huì)話(huà)標(biāo)識(shí)相對(duì)應(yīng)。其中,所述數(shù)據(jù)接收單元41可以包括:數(shù)據(jù)接收模塊411,用于通過(guò)建立的所述多連接接收服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)流。所述數(shù)據(jù)接收模塊具體用于:通過(guò)建立的多連接中的任意一個(gè)當(dāng)前連接接收服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)流。其中,所述數(shù)據(jù)接收模塊411具體可以包括:第四判斷子模塊,用于響應(yīng)于服務(wù)器通過(guò)建立的多連接中的任意一個(gè)當(dāng)前連接發(fā)送的、壓縮后的目標(biāo)數(shù)據(jù)流,判斷用于存放壓縮后的目標(biāo)數(shù)據(jù)流的壓縮緩沖區(qū)是否有足夠的存儲(chǔ)空間;第五存儲(chǔ)子模塊,用于在所述第四判斷子模塊的結(jié)果為是的情況下,將所述壓縮后的目標(biāo)數(shù)據(jù)流存儲(chǔ)至所述壓縮緩沖區(qū)中;第五判斷子模塊,用于判斷所述壓縮緩沖區(qū)的存儲(chǔ)空間是否用完;和,第六存儲(chǔ)子模塊,用于在所述第五判斷子模塊的結(jié)果為是的情況下,將所述壓縮緩沖區(qū)中壓縮后的目標(biāo)數(shù)據(jù)流進(jìn)行解壓后存儲(chǔ)至緩存緩沖區(qū)中。其中,所述壓縮后的目標(biāo)數(shù)據(jù)流中的壓縮數(shù)據(jù)包括第二數(shù)據(jù)頭,所述第二數(shù)據(jù)頭包括:壓縮標(biāo)志、壓縮后的壓縮長(zhǎng)度、壓縮前的源長(zhǎng)度和壓縮數(shù)據(jù)內(nèi)容;所述第六存儲(chǔ)子模塊包括:讀取子模塊,用于讀取所述壓縮后的目標(biāo)數(shù)據(jù)流中的壓縮數(shù)據(jù)的第二數(shù)據(jù)頭;第六判斷子模塊,用于判斷所述緩存緩沖區(qū)的存儲(chǔ)空間是否大于所述壓縮數(shù)據(jù)的壓縮前的源長(zhǎng)度;解壓子模塊,用于在所述第六判斷子模塊的結(jié)果為是的情況下,將壓縮后的目標(biāo)數(shù)據(jù)流進(jìn)行解壓;和,第七存儲(chǔ)子模塊,用于將解壓后的目標(biāo)數(shù)據(jù)流存儲(chǔ)至緩存緩沖區(qū)中。其中,所述解壓后的目標(biāo)數(shù)據(jù)流中的目標(biāo)數(shù)據(jù)具有第一數(shù)據(jù)頭,所述 第一數(shù)據(jù)頭包括:數(shù)據(jù)類(lèi)型、數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)標(biāo)識(shí),所述數(shù)據(jù)類(lèi)型用于表示所述目標(biāo)數(shù)據(jù)是否進(jìn)行了切割,所述數(shù)據(jù)長(zhǎng)度為一個(gè)目標(biāo)數(shù)據(jù)的長(zhǎng)度,所述數(shù)據(jù)標(biāo)識(shí)用于唯一標(biāo)識(shí)所述待發(fā)送的數(shù)據(jù)流中的一個(gè)目標(biāo)數(shù)據(jù);所述數(shù)據(jù)接收模塊411還可以包括:組合子模塊,用于依據(jù)所述目標(biāo)數(shù)據(jù)流中的目標(biāo)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),按照先后順序組合所述目標(biāo)數(shù)據(jù);和,顯示子模塊,用于將組合好的目標(biāo)數(shù)據(jù)顯示給用戶(hù)。本實(shí)施例的客戶(hù)端采用多連接來(lái)接收數(shù)據(jù)流,這樣的話(huà),即使多連接中當(dāng)前正在接收數(shù)據(jù)的連接的速度變慢,客戶(hù)端也可以相應(yīng)的采用服務(wù)器選擇的多連接中的其他剩余連接來(lái)繼續(xù)接收數(shù)據(jù)流,從而可以彌補(bǔ)速度變慢的連接所帶來(lái)的波動(dòng),使得數(shù)據(jù)流的接收速度趨于平滑。進(jìn)一步的,在本實(shí)施例中,針對(duì)壓縮緩沖區(qū)中的數(shù)據(jù),也是待壓縮緩沖區(qū)的存儲(chǔ)空間滿(mǎn)了之后再批量解壓縮數(shù)據(jù)流,從而更進(jìn)一步的降低了網(wǎng)絡(luò)堵塞出現(xiàn)的可能性,使得數(shù)據(jù)鏈路的質(zhì)量得到了保證。需要說(shuō)明的是,本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。對(duì)于裝置類(lèi)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。以上對(duì)本申請(qǐng)所提供的基于多連接的數(shù)據(jù)發(fā)送方法及裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。當(dāng)前第1頁(yè)1 2 3