文件下載方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例提供一種文件下載方法、裝置及系統(tǒng),涉及計算機技術(shù)領(lǐng)域。其中,所述方法適用于客戶端,其包括:獲取下載同一文件的客戶端列表;將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其中,所述第一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組。本發(fā)明實施例提高了數(shù)據(jù)傳輸?shù)目煽啃裕涣硗庖虿捎昧藝娙a減少了信道中反饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
【專利說明】
文件下載方法、裝置及系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及計算機技術(shù)領(lǐng)域,尤其設(shè)及一種文件下載方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002] 隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)形成一種從集中式系統(tǒng)向分布式系統(tǒng)發(fā)展的趨 勢。P2P(peer to peer,對等網(wǎng)絡(luò))或P2SP(Peer to Server and Peer,點對服務(wù)器和點)網(wǎng) 絡(luò)隨之誕生,它通過直接交換方式共享計算機資源和服務(wù)。
[0003] P2P或P2SP的基本傳輸模式都是把文件先分成塊,再按塊傳輸直到傳完文件。P2SP 除了包含P2PW外,P2SP的"S"是指服務(wù)器。P2SP有效地把原本孤立的服務(wù)器和其鏡像資源 W及P2P資源整合到了一起。
[0004] 發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn):數(shù)據(jù)在客戶端之間或客戶端與服務(wù)器之間進 行傳輸時,若網(wǎng)絡(luò)環(huán)境惡劣,很可能導(dǎo)致數(shù)據(jù)同步傳輸失敗,或者需要反復(fù)重傳才能最終成 功完成數(shù)據(jù)的傳輸。因此,在網(wǎng)絡(luò)環(huán)境較差的情況下,P2P或P2SP網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)目煽啃?較差。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例提供一種文件下載方法、裝置及系統(tǒng),用W解決現(xiàn)有技術(shù)中在惡劣 的網(wǎng)絡(luò)環(huán)境下數(shù)據(jù)傳輸可靠性較低的問題。
[0006] 本發(fā)明實施例提供一種文件下載方法,適用于客戶端,包括:
[0007] 獲取下載同一文件的客戶端列表;
[000引將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其中,所述第 一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0009] 向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組。
[0010] 可選的,上述的方法中,所述將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第 一噴泉碼數(shù)據(jù),包括:
[0011] 將存儲在本地的所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組;
[0012] 對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組;
[0013] 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù),所述N個編碼分組構(gòu)成所述第一 噴泉碼數(shù)據(jù)。
[0014] 可選的,上述的方法,還包括:
[0015] 接收到所述客戶端發(fā)送的反饋信息后,停止向所述客戶端發(fā)送所述N個編碼分組;
[0016] 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的, 所述預(yù)設(shè)數(shù)量大于所述K。
[0017] 可選的,上述的方法,還包括:
[0018] 接收客戶端發(fā)送的第二噴泉碼數(shù)據(jù);
[0019] 基于接收到的所述第二噴泉碼數(shù)據(jù)中包含的M個編碼分組,解碼出所述第二噴泉 碼數(shù)據(jù)對應(yīng)的數(shù)據(jù);
[0020] 其中,M〉M',所述r為在生成所述第二噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到 的原始數(shù)據(jù)分組的數(shù)量,所述M'為大于或等于2的整數(shù)。
[0021] 可選的,上述的方法,還包括:
[0022] 若無法接收到所述客戶端列表中的客戶端發(fā)送的數(shù)據(jù),則向服務(wù)器端發(fā)送下載請 求,所述下載請求中攜帶有欲下載文件標識;
[0023] 接收所述服務(wù)器端發(fā)送的所述欲下載文件標識對應(yīng)的文件數(shù)據(jù)的噴泉碼數(shù)據(jù);
[0024] 基于接收到的所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)中包含的S個編碼分組,解碼出所述欲 下載文件的文件數(shù)據(jù);
[0025] 其中,S〉S',所述S'為在生成所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)過程中將所述欲下載文 件的文件數(shù)據(jù)進行分組后得到的原始數(shù)據(jù)分組的數(shù)量,所述S'為大于或等于2的整數(shù)。 [00%] 可選的,上述的方法,還包括:
[0027] 接收所述服務(wù)器端發(fā)送的調(diào)度信息,并根據(jù)所述調(diào)度信息,向所述調(diào)度信息指定 的客戶端發(fā)送所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)。
[0028] 可選的,上述的方法,還包括:
[0029] 接收服務(wù)器端發(fā)送的查詢請求,其中,所述查詢請求中攜帶有欲查詢文件標識;
[0030] 若本地存儲有所述欲查詢文件標識對應(yīng)的文件數(shù)據(jù),則將所述欲查詢文件的文件 數(shù)據(jù)進行編碼,生成對應(yīng)的噴泉碼數(shù)據(jù);
[0031 ]向所述服務(wù)器端發(fā)送所述欲查詢文件對應(yīng)的噴泉碼數(shù)據(jù)。
[0032] 可選的,上述的方法中,所述向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā) 送所述第一噴泉碼數(shù)據(jù),具體為:
[0033] 采用用戶數(shù)據(jù)報協(xié)議UDP向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所 述第一噴泉碼數(shù)據(jù)。
[0034] 本發(fā)明實施例還提供一種文件下載方法,適用于服務(wù)器端,包括:
[0035] 接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的標識;
[0036] 若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地存儲所述文件 標識對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其中,所述噴泉碼數(shù) 據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0037] 向所述客戶端發(fā)送所述N個編碼分組。
[0038] 可選的,上述的方法中,所述將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),包 括:
[0039] 將所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組;
[0040] 對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組;
[0041] 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù)。
[0042] 可選的,上述的方法,還包括:
[0043] 接收到所述客戶端發(fā)送的反饋信息后,停止向所述客戶端發(fā)送所述N個編碼分組;
[0044] 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的, 所述預(yù)設(shè)數(shù)量大于所述K。
[0045] 可選的,上述的方法,還包括:
[0046] 若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地未存儲所述文 件標識對應(yīng)的文件,則向網(wǎng)絡(luò)中的其他客戶端發(fā)送查詢請求,其中,所述查詢請求中攜帶有 所述文件的文件標識;
[0047] 若所述網(wǎng)絡(luò)中存在有存儲有所述文件的客戶端,則接收所述客戶端發(fā)送的噴泉碼 數(shù)據(jù);
[0048] 基于接收到的所述噴泉碼數(shù)據(jù)中包含的L個編碼分組,解碼出所述文件的數(shù)據(jù);
[0049] 其中,L〉K,所述K為在生成所述噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到的原始 數(shù)據(jù)分組的數(shù)量,所述K為大于或等于2的整數(shù)。
[0050] 可選的,上述的方法中,所述向所述客戶端發(fā)送所述N個編碼分組,具體為:
[0051 ]采用用戶數(shù)據(jù)報協(xié)議UDP向所述客戶端發(fā)送所述N個編碼分組。
[0052] 本發(fā)明還提供了一種文件下載裝置,適用于客戶端,包括:
[0053] 獲取模塊,用于獲取下載同一文件的客戶端列表;
[0054] 編碼模塊,用于將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù) 據(jù),其中,所述第一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0055] 發(fā)送模塊,用于向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編 碼分組。
[0056] 可選的,上述的文件下載裝置中,所述編碼模塊,包括:
[0057] 分組單元,用于將存儲在本地的所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分 組;
[0058] 編碼單元,用于對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組;
[0059] 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù)。
[0060] 可選的,上述的文件下載裝置,還包括:
[0061] 所述發(fā)送模塊,還用于在接收到所述客戶端發(fā)送的反饋信息后,停止向所述客戶 端發(fā)送所述N個編碼分組;
[0062] 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的, 所述預(yù)設(shè)數(shù)量大于所述K。
[0063] 可選的,上述的文件下載裝置,還包括:
[0064] 第一接收模塊,用于接收客戶端發(fā)送的第二噴泉碼數(shù)據(jù);
[0065] 第一解碼模塊,用于基于接收到的所述第二噴泉碼數(shù)據(jù)中包含的M個編碼分組,解 碼出所述第二噴泉碼數(shù)據(jù)對應(yīng)的數(shù)據(jù);
[0066] 其中,M〉M',所述r為在生成所述第二噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到 的原始數(shù)據(jù)分組的數(shù)量,所述M'為大于或等于2的整數(shù)。
[0067] 可選的,上述的文件下載裝置,還包括:
[0068] 所述發(fā)送模塊,還用于當無法接收到所述客戶端列表中的客戶端發(fā)送的數(shù)據(jù)時, 向服務(wù)器端發(fā)送下載請求,所述下載請求中攜帶有欲下載文件標識;
[0069] 第二接收模塊,用于接收所述服務(wù)器端發(fā)送的所述欲下載文件標識對應(yīng)的文件數(shù) 據(jù)的噴泉碼數(shù)據(jù);
[0070] 第二解碼模塊,用于基于接收到的所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)中包含的S個編碼 分組,解碼出所述欲下載文件的文件數(shù)據(jù);
[0071] 其中,s〉s',所述s'為在生成所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)過程中將所述欲下載文 件的文件數(shù)據(jù)進行分組后得到的原始數(shù)據(jù)分組的數(shù)量,所述s'為大于或等于2的整數(shù)。
[0072] 可選的,上述的文件下載裝置中,所述第二接收模塊,還用于接收所述服務(wù)器端發(fā) 送的調(diào)度信息,并根據(jù)所述調(diào)度信息,向所述調(diào)度信息指定的客戶端發(fā)送所述文件數(shù)據(jù)的 噴泉碼數(shù)據(jù)。
[0073] 可選的,上述的文件下載裝置,還包括:
[0074] 第=接收模塊,用于接收服務(wù)器端發(fā)送的查詢請求,其中,所述查詢請求中攜帶有 欲查詢文件標識;
[0075] 所述編碼模塊,還用于當本地存儲有所述欲查詢文件標識對應(yīng)的文件數(shù)據(jù)時,將 所述欲查詢文件的文件數(shù)據(jù)進行編碼,生成對應(yīng)的噴泉碼數(shù)據(jù);
[0076] 所述發(fā)送模塊,還用于向所述服務(wù)器端發(fā)送所述欲查詢文件對應(yīng)的噴泉碼數(shù)據(jù)。
[0077] 可選的,上述的文件下載裝置中,所述發(fā)送模塊,具體用于采用用戶數(shù)據(jù)報協(xié)議 UDP向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述第一噴泉碼數(shù)據(jù)。
[0078] 本發(fā)明實施例還提供了一種文件下載裝置,適用于服務(wù)器端,包括:
[0079] 接收模塊,用于接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文 件的標識;
[0080] 編碼模塊,用于當網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本 地存儲所述文件標識對應(yīng)的文件時,將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其 中,所述噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0081] 發(fā)送模塊,用于向所述客戶端發(fā)送所述N個編碼分組。
[0082] 可選的,上述的文件下載裝置中,所述編碼模塊,包括:
[0083] 分組單元,用于將所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組;
[0084] 編碼單元,用于對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組;
[0085] 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù)。
[0086] 可選的,上述的文件下載裝置中,所述發(fā)送模塊,還用于接收到所述客戶端發(fā)送的 反饋信息后,停止向所述客戶端發(fā)送所述N個編碼分組;
[0087] 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的, 所述預(yù)設(shè)數(shù)量大于所述K。
[0088] 可選的,上述的文件下載裝置,還包括:
[0089] 所述發(fā)送模塊,還用于當網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶 端,且本地未存儲所述文件標識對應(yīng)的文件時,向網(wǎng)絡(luò)中的其他客戶端發(fā)送查詢請求,其 中,所述查詢請求中攜帶有所述文件的文件標識;
[0090] 所述接收模塊,還用于當所述網(wǎng)絡(luò)中存在有存儲有所述文件的客戶端時,接收所 述客戶端發(fā)送的噴泉碼數(shù)據(jù);
[0091] 解碼模塊,用于基于接收到的所述噴泉碼數(shù)據(jù)中包含的L個編碼分組,解碼出所述 文件的數(shù)據(jù);
[0092] 其中,L〉K,所述K為在生成所述噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到的原始 數(shù)據(jù)分組的數(shù)量,所述K為大于或等于2的整數(shù)。
[0093] 可選的,上述的文件下載裝置中,所述發(fā)送模塊,具體用于采用用戶數(shù)據(jù)報協(xié)議 UDP向所述客戶端發(fā)送所述N個編碼分組。
[0094]本發(fā)明實施例還提供的了一種文件下載系統(tǒng),其特征在于,包括適用于客戶端的 文件下載裝置W及適用于服務(wù)器端的文件下載裝置;其中,
[00M]所述適用于客戶端的文件下載裝置用于:
[0096] 獲取下載同一文件的客戶端列表;
[0097] 將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其中,所述第 一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0098] 向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組;
[0099] 所述適用于服務(wù)器端的文件下載裝置用于:
[0100] 接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的標識;
[0101 ]若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地存儲所述文件 標識對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其中,所述噴泉碼數(shù) 據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0102] 向所述客戶端發(fā)送所述N個編碼分組。
[0103] 本發(fā)明實施例提供一種文件下載裝置,適用于客戶端,包括存儲器W及一個或者 多個處理器,其中,文件下載裝置還包括:
[0104] -個或多個單元,所述一個或多個單元被存儲在所述存儲器中并被配置成由所述 一個或多個處理器執(zhí)行,所述一個或多個單元包括用于執(zhí)行W下步驟的指令:
[0105]獲取下載同一文件的客戶端列表;
[0106] 將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其中,所述第 一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0107] 向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組。
[0108] 本發(fā)明實施例提供一種與文件下載裝置結(jié)合使用的計算機程序產(chǎn)品,所述計算機 程序產(chǎn)品包括計算機可讀的存儲介質(zhì)和內(nèi)嵌于其中的計算機程序機制,所述計算機程序機 制包括執(zhí)行W下步驟的指令:
[0109] 獲取下載同一文件的客戶端列表;
[0110] 將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其中,所述第 一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0111] 向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組。
[0112] 本發(fā)明實施例提供一種文件下載裝置,適用于服務(wù)器端,包括存儲器W及一個或 者多個處理器,其中,文件下載裝置還包括:
[0113] -個或多個單元,所述一個或多個單元被存儲在所述存儲器中并被配置成由所述 一個或多個處理器執(zhí)行,所述一個或多個單元包括用于執(zhí)行W下步驟的指令:
[0114] 接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的標識;
[0115] 若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地存儲所述文件 標識對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其中,所述噴泉碼數(shù) 據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0116] 向所述客戶端發(fā)送所述N個編碼分組。
[0117] 本發(fā)明實施例提供一種與文件下載裝置結(jié)合使用的計算機程序產(chǎn)品,所述計算機 程序產(chǎn)品包括計算機可讀的存儲介質(zhì)和內(nèi)嵌于其中的計算機程序機制,所述計算機程序機 制包括執(zhí)行W下步驟的指令:
[0118] 接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的標識;
[0119] 若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地存儲所述文件 標識對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其中,所述噴泉碼數(shù) 據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0120] 向所述客戶端發(fā)送所述N個編碼分組。
[0121] 本發(fā)明實施例提供的文件下載方法、裝置及系統(tǒng),通過將待傳輸?shù)哪繕宋募姆?塊數(shù)據(jù)編碼成噴泉碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā) 送,直到接收到客戶端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編 碼分組,因為噴泉碼是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè) 數(shù)量的編碼分組解碼出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳 輸?shù)目煽啃?另外,由于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息, 相較于現(xiàn)有技術(shù)中只要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴 泉碼減少了信道中反饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
【附圖說明】
[0122] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可W根 據(jù)運些附圖獲得其他的附圖。
[0123] 圖1為本發(fā)明實施例提供的一種可選的P2SP網(wǎng)絡(luò)架構(gòu)示意圖;
[0124] 圖2為本發(fā)明實施例一提供的文件下載方法的流程示意圖;
[0125] 圖3為本發(fā)明實施例二提供的文件下載方法的流程示意圖;
[0126] 圖4為本發(fā)明實施例=提供的文件下載方法的流程示意圖;
[0127] 圖5為本發(fā)明實施例四提供的文件下載方法的流程示意圖;
[0128] 圖6為本發(fā)明實施例六提供的文件下載裝置的結(jié)構(gòu)示意圖;
[0129] 圖7為本發(fā)明實施例屯提供的文件下載裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0130] 為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0131] 首先結(jié)合圖1介紹本發(fā)明實施例提供的文件下載方法可W適用于的應(yīng)用場景。
[0132] 本發(fā)明實施例提供的所述文件下載方法可適用在P2P和P2SP網(wǎng)絡(luò)中。其中,P2SP在 P2P的架構(gòu)基礎(chǔ)上,加入了一個數(shù)據(jù)源提供者S(Server),由運個數(shù)據(jù)源將多媒體數(shù)據(jù)分發(fā) 到網(wǎng)絡(luò)中的某些節(jié)點,其他的一些節(jié)點可W對等網(wǎng)的方式從其他有數(shù)據(jù)的節(jié)點那獲取多媒 體數(shù)據(jù)。節(jié)點之間的數(shù)據(jù)共享,W均等的方式進行內(nèi)容分發(fā)。下面WP2SP網(wǎng)絡(luò)為例,對本發(fā) 明提供的技術(shù)方案進行說明。
[0133] 圖1為本發(fā)明實施例提供的一種可選的P2SP網(wǎng)絡(luò)架構(gòu)示意圖。如圖1所示,該網(wǎng)絡(luò) 架構(gòu)中包含有服務(wù)器端設(shè)備602W及多個客戶端設(shè)備601,假設(shè)該網(wǎng)絡(luò)架構(gòu)中包含有A、B、C =個客戶端設(shè)備,運=個客戶端設(shè)備需要下載同一文件。服務(wù)器端設(shè)備存儲有下載同一文 件的客戶端列表,該列表中包含有客戶端設(shè)備A、客戶端設(shè)備B和客戶端設(shè)備C的標識。具體 的,服務(wù)器端設(shè)備在接收到客戶端設(shè)備發(fā)送的下載請求后,會將發(fā)送下載請求的客戶端設(shè) 備的標識添加到W所述文件的標識為關(guān)鍵詞key的客戶端列表中;或者,服務(wù)器端設(shè)備根據(jù) 所述下載請求中攜帶的文件的標識,獲取該文件的屬性計算出文件的文件指紋,并將發(fā)送 下載請求的客戶端設(shè)備的標識添加到W所述文件的指紋作為關(guān)鍵詞key的客戶端列表中。 其中,文件的屬性包含但不限于:UI?L(Unifo;rm Resource Locator,統(tǒng)一資源定位符),BT (BitTorrent,比特洪流)種子文件,ed2k(eDonkey2000network,電驢2000網(wǎng)絡(luò))鏈接等???戶端設(shè)備A、客戶端設(shè)備B和客戶端設(shè)備C在獲取到客戶端列表后,運=個客戶端設(shè)備即可實 現(xiàn)節(jié)點之間的數(shù)據(jù)共享,W均等的方式進行數(shù)據(jù)的分發(fā),相互之間進行數(shù)據(jù)的交換,最終均 達到下載完成目標文件的目的。
[0134] 假設(shè)目標文件被分成3個分塊數(shù)據(jù),客戶端設(shè)備A存儲有目標文件的分塊數(shù)據(jù)1、客 戶端設(shè)備B存儲有目標文件的分塊數(shù)據(jù)2、客戶端設(shè)備C存儲有目標文件的分塊數(shù)據(jù)3??蛻?端設(shè)備A可將分塊數(shù)據(jù)1進行編碼,生成噴泉碼數(shù)據(jù);然后持續(xù)向客戶端列表中的請求下載 目標文件的客戶端設(shè)備B和客戶端設(shè)備C分發(fā)分塊數(shù)據(jù)1的噴泉碼數(shù)據(jù)中的多個編碼分組。 同樣的,客戶端設(shè)備B可將本地分塊數(shù)據(jù)2進行噴泉碼編碼然后向客戶端設(shè)備A和客戶端設(shè) 備C進行分發(fā);客戶端設(shè)備C可將本地分塊數(shù)據(jù)3進行噴泉碼編碼然后向客戶端設(shè)備A和客戶 端設(shè)備B進行分發(fā)。
[0135] 運里需要說明的是:若網(wǎng)絡(luò)中不存在存儲有目標文件的客戶端設(shè)備或因某些原因 無法獲取到其他客戶端設(shè)備發(fā)送的數(shù)據(jù),則客戶端設(shè)備可向服務(wù)器端設(shè)備發(fā)送下載請求, 服務(wù)器端設(shè)備此時相當于網(wǎng)絡(luò)中的一個客戶端設(shè)備向請求下載目標文件的客戶端設(shè)備分 發(fā)分塊數(shù)據(jù)。同樣的,若服務(wù)器端設(shè)備接收到客戶端設(shè)備發(fā)送的下載目標文件的下載請求 后,查詢本地?zé)o該目標文件時,服務(wù)器端設(shè)備也可向網(wǎng)絡(luò)中其他客戶端設(shè)備發(fā)送查詢請求。 如果網(wǎng)絡(luò)中存在客戶端設(shè)備有此文件,那么此時服務(wù)器端設(shè)備同普通的客戶端設(shè)備一樣從 存儲有目標文件的客戶端設(shè)備處獲取文件分塊信息及分塊數(shù)據(jù),并將獲取到的文件分塊信 息及分塊數(shù)據(jù)返回給請求下載的客戶端設(shè)備。如果當服務(wù)器端設(shè)備在全P2SP網(wǎng)絡(luò)中都沒有 查詢到目標文件,那么服務(wù)器端設(shè)備將根據(jù)提交請求的客戶端設(shè)備所提交的信息,到其他 網(wǎng)絡(luò),如BT、ed2k等網(wǎng)絡(luò)中,獲取資源。如果服務(wù)器端設(shè)備在其他網(wǎng)絡(luò)中還是沒有查詢到結(jié) 果,那么將向請求的客戶端設(shè)備發(fā)出無法獲取該資源,由客戶端設(shè)備根據(jù)目標文件的屬性 自行下載此文件。
[0136] 實施例一
[0137] 圖2示出了本發(fā)明實施例一提供的文件下載方法的流程示意圖。本實施例提供的 所述方法可適用于客戶端。本實施例提供的所述方法的執(zhí)行主體可W是文件下載裝置,所 述文件下載裝置可W是安裝在客戶端設(shè)備上的硬件實體或應(yīng)用程序。如圖2所示,本實施例 一提供的所述方法,包括:
[0138] 步驟101、獲取下載同一文件的客戶端列表。
[0139] 具體的,本步驟可采用如下方法實現(xiàn):
[0140] 步驟S11、向服務(wù)器端發(fā)送下載所述文件的下載請求。
[0141] 步驟S12、接收所述服務(wù)器端反饋的W所述文件的標識為關(guān)鍵詞key的客戶端列 表。
[0142] 在P2SP網(wǎng)絡(luò)中,若服務(wù)器端設(shè)備本地存儲有所述文件標識對應(yīng)的文件,則所述服 務(wù)器端設(shè)備在接收到所述下載請求后,首先會根據(jù)所述文件的標識獲取所述文件的屬性, 并根據(jù)所述屬性計算所述第一目標文件的指紋。其中,指紋的生成方式可W參考現(xiàn)有方式 實現(xiàn),本實施例不寶述。文件的屬性包含但不限于:m?L,BT種子文件,ed2k鏈接等。然后,若 服務(wù)器端設(shè)備查詢到本地已創(chuàng)建有W所述指紋為關(guān)鍵詞key的客戶端列表,則所述客戶端 的標識添加到所述客戶端列表中;若服務(wù)器端設(shè)備查詢本地?zé)oW所述指紋為key的客戶端 列表,則創(chuàng)建W所述指紋為key的客戶端列表,并將所述客戶端的標識添加到所述客戶端列 表中。最后向所述客戶端反饋W所述指紋為key的客戶端列表。
[0143] 步驟102、將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其 中,所述第一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù)。
[0144] 在具體實施時,本步驟可采用如下方法實現(xiàn):
[0145] 首先,將存儲在本地的所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組。
[0146] 然后,對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組。
[0147] 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù)。
[0148] 實際應(yīng)用中,該噴泉碼可W是LT碼,也可W是Raptor碼。
[0149] 所謂的噴泉碼,就是指使用該種編碼可W由k個原始數(shù)據(jù)分組生成任意數(shù)量的編 碼分組,而只要知道其中任意n(n>k)個編碼分組,即可通過譯碼成功恢復(fù)出全部原始數(shù)據(jù) 分組。
[0150] 本實施例中,假設(shè)接收到的數(shù)據(jù)單元的長度為L比特,將長度為L比特的數(shù)據(jù)單元 分割成k =「£八1個輸入原始數(shù)據(jù)分組,則每個輸入原始數(shù)據(jù)分組的長為1。
[0151] 定義:度d表示噴泉碼編碼過程中每次選取原始數(shù)據(jù)分組的個數(shù)。
[0152] 噴泉碼編碼生成一個編碼分組的具體過程如下:
[0153] 1)隨機(偽隨機)選擇一個度d;
[0154] 2)從所有的原始數(shù)據(jù)分組中隨機(偽隨機)選取d個不同的輸入數(shù)據(jù)分組;
[01W] 3)將運d個不同輸入數(shù)據(jù)分組模二和,生成一個編碼分組。
[0156] 假設(shè)已知n個編碼分組,每個編碼分組代表一個有k個未知輸入的線性方程。則整 個譯碼過程可W看作是n個方程聯(lián)合求解k個未知數(shù)的線性方程組GXX = N,其中G是生成矩 陣,大小為nXk,X為kXl的待求解原始數(shù)據(jù)分組向量,N為nXl的編碼分組向量。當生成矩 陣G列滿秩即G的秩為k時,待求解原始數(shù)據(jù)分組X有唯一確定解。
[0157] 步驟103、向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分 組。
[015引在具體實施時,可采用UDP(Use;r化tagram Protocol,用戶數(shù)據(jù)報協(xié)議)協(xié)議向所 述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組。本發(fā)明實施例采用UDP 協(xié)議可W減少傳輸過程中的協(xié)議數(shù)據(jù)的傳輸量,即便存在數(shù)據(jù)丟包在噴泉碼的編碼保證下 也能順利的、安全的還原數(shù)據(jù)。
[0159] 運里需要補充的是:在實際應(yīng)用中,噴泉碼的發(fā)送端隨機編碼,由k個原始分組生 成任意數(shù)量的編碼分組,發(fā)送端在不知道運些數(shù)據(jù)包是否被成功接收的情況下,持續(xù)發(fā)送 數(shù)據(jù)包。而接收端只要收到k(l+〇個編碼分組的任意子集,即收到一個稍微大于原來k值得 N,就可通過譯碼W高概率(和e有關(guān))成功地恢復(fù)全部原始分組。
[0160] 下面運個比喻形象地解釋了運個過程。
[0161] 單個源節(jié)點S如同源源不斷產(chǎn)生水滴(編碼分組)的噴泉,不停地向周圍的多個桶K (表示多個接收端的緩存)發(fā)送"水滴"(表示數(shù)據(jù)包),當一個桶里的水滿了 W后(緩存滿), 它才向源節(jié)點發(fā)送一個反饋。每次發(fā)送的水滴是一帖里面隨機選擇的一些包組合起來的 包,運種組合可W是線性的,也可W是非線性的,隨機選擇保證了每次發(fā)送的信息對接收節(jié) 點是有用的。桶在裝滿水之后(接收足夠數(shù)量的水滴),即可達到飲用(成功譯碼)的目的,而 不必關(guān)屯、具體是哪一滴水(編碼分組)流入桶中。當源節(jié)點收到所有桶的ACKW后,再發(fā)送新 的一帖,否則繼續(xù)發(fā)送組合包。
[0162] 本發(fā)明實施例提供的技術(shù)方案,通過將待傳輸?shù)哪繕宋募姆謮K數(shù)據(jù)編碼成噴泉 碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā)送,直到接收到客戶 端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編碼分組,因為噴泉碼 是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè)數(shù)量的編碼分組解碼 出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳輸?shù)目煽啃?另外,由 于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息,相較于現(xiàn)有技術(shù)中只 要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴泉碼減少了信道中反 饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
[0163] 實施例二
[0164] 圖3示出了本發(fā)明實施例一提供的文件下載方法的流程示意圖。本實施例提供的 所述方法可適用于客戶端。本實施例提供的所述方法的執(zhí)行主體可W是文件下載裝置,所 述文件下載裝置可W是安裝在客戶端設(shè)備上的硬件實體或應(yīng)用程序。如圖3所示,本實施例 二提供的所述方法,包括:
[0165] 步驟201、獲取下載同一文件的客戶端列表。
[0166] 步驟202、將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其 中,所述第一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù)。
[0167] 具體的編碼過程可參見上述實施例一中的相應(yīng)部分的內(nèi)容,此處不再寶述。
[0168] 步驟203、向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分 組。
[0169] 步驟204、接收到所述客戶端發(fā)送的反饋信息后,停止向所述客戶端發(fā)送所述N個 編碼分組。
[0170] 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的, 所述預(yù)設(shè)數(shù)量大于所述K。在具體實施時,所述預(yù)設(shè)數(shù)量可W等于K(l+〇,e為預(yù)設(shè)的譯碼開 銷。譯碼開銷可人為設(shè)定,當然譯碼開銷越大,基于接收到的編碼分組恢復(fù)出全部原始分組 的概率也就越大。在具體實施時,技術(shù)人員可根據(jù)多次試驗找到較為合適的譯碼開銷值。
[0171] 步驟205、接收客戶端發(fā)送的第二噴泉碼數(shù)據(jù)。
[0172] 步驟206、基于接收到的所述第二噴泉碼數(shù)據(jù)中包含的M個編碼分組,解碼出所述 第二噴泉碼數(shù)據(jù)對應(yīng)的數(shù)據(jù)。
[0173] 其中,M〉M',所述r為在生成所述第二噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到 的原始數(shù)據(jù)分組的數(shù)量,所述M'為大于或等于2的整數(shù)。具體實施時,M可W等于r (1 + 0,e 為預(yù)設(shè)的譯碼開銷。譯碼開銷可人為設(shè)定,當然譯碼開銷越大,基于接收到的編碼分組恢復(fù) 出全部原始分組的概率也就越大。在具體實施時,技術(shù)人員可根據(jù)多次試驗找到較為合適 的譯碼開銷值。
[0174] 步驟207、若無法接收到所述客戶端列表中的客戶端發(fā)送的數(shù)據(jù),則向服務(wù)器端發(fā) 送下載請求,所述下載請求中攜帶有欲下載文件標識。
[0175] 在實際應(yīng)用中,客戶端無法接收到所述客戶端列表中的客戶端發(fā)送的數(shù)據(jù)的情況 可能有如下幾種情況:
[0176] 情況1,客戶端與客戶端列表中的所有客戶端均建立連接失敗。
[0177] 情況2,客戶端與客戶端列表中的所有客戶端中的至少一個客戶端成功建立了連 接,但無法接收到所述成功建立連接的客戶端發(fā)送的數(shù)據(jù)。
[0178] 步驟208、接收所述服務(wù)器端發(fā)送的所述欲下載文件標識對應(yīng)的文件數(shù)據(jù)的噴泉 碼數(shù)據(jù)。
[0179] 步驟209、基于接收到的所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)中包含的S個編碼分組,解碼 出所述欲下載文件的文件數(shù)據(jù)。
[0180] 其中,S〉S',所述S'為在生成所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)過程中將所述欲下載文 件的文件數(shù)據(jù)進行分組后得到的原始數(shù)據(jù)分組的數(shù)量,所述S'為大于或等于2的整數(shù)。同樣 的,在具體實施時,S可W等于S'(1+0, e為預(yù)設(shè)的譯碼開銷。譯碼開銷可人為設(shè)定,當然譯 碼開銷越大,基于接收到的編碼分組恢復(fù)出全部原始分組的概率也就越大。在具體實施時, 技術(shù)人員可根據(jù)多次試驗找到較為合適的譯碼開銷值。
[0181] 步驟210、接收所述服務(wù)器端發(fā)送的調(diào)度信息,并根據(jù)所述調(diào)度信息,向所述調(diào)度 信息指定的客戶端發(fā)送所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)。
[0182] 步驟211、接收服務(wù)器端發(fā)送的查詢請求,其中,所述查詢請求中攜帶有欲查詢文 件標識。
[0183] 步驟212、若本地存儲有所述欲查詢文件標識對應(yīng)的文件數(shù)據(jù),則將所述欲查詢文 件的文件數(shù)據(jù)進行編碼,生成對應(yīng)的噴泉碼數(shù)據(jù)。
[0184] 步驟213、向所述服務(wù)器端發(fā)送所述欲查詢文件對應(yīng)的噴泉碼數(shù)據(jù)。
[0185] 本發(fā)明實施例提供的技術(shù)方案,通過將待傳輸?shù)哪繕宋募姆謮K數(shù)據(jù)編碼成噴泉 碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā)送,直到接收到客戶 端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編碼分組,因為噴泉碼 是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè)數(shù)量的編碼分組解碼 出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳輸?shù)目煽啃?另外,由 于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息,相較于現(xiàn)有技術(shù)中只 要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴泉碼減少了信道中反 饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
[0186] 實施例S
[0187] 圖4示出了本發(fā)明實施例=提供的文件下載方法的流程示意圖。本實施例提供的 所述方法可適用于服務(wù)器端。本實施例提供的所述方法的執(zhí)行主體可W是文件下載裝置, 該文件下載裝置可W是安裝在服務(wù)器端設(shè)備上的硬件實體或應(yīng)用程序。如圖4所示,本實施 例=提供的所述方法,包括:
[0188] 步驟301、接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的 標識。
[0189] 在具體實施時,所述下載請求可W是所述客戶端在無法從網(wǎng)絡(luò)中其他客戶端(如 下載所述文件的客戶端列表中的客戶端)中下載到所述標識對應(yīng)的文件情況下發(fā)送的,當 然也可W是所述客戶端直接發(fā)送的。
[0190] 在實際應(yīng)用中,客戶端無法接收到所述客戶端列表中的客戶端發(fā)送的數(shù)據(jù)的情況 可能有如下幾種情況:
[0191] 情況1,客戶端與客戶端列表中的所有客戶端均建立連接失敗。
[0192] 情況2,客戶端與客戶端列表中的所有客戶端中的至少一個客戶端成功建立了連 接,但無法接收到所述成功建立連接的客戶端發(fā)送的數(shù)據(jù)。
[0193] 步驟302、若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地存儲 所述文件標識對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其中,所述 噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù)。
[0194] 具體的,本步驟可采用如下方法實現(xiàn):
[01M]首先,將所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組。
[0196] 然后,對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組。
[0197] 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù)。
[0198] 步驟303、向所述客戶端發(fā)送所述N個編碼分組。
[0199] 本發(fā)明實施例提供的技術(shù)方案,通過將待傳輸?shù)哪繕宋募姆謮K數(shù)據(jù)編碼成噴泉 碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā)送,直到接收到客戶 端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編碼分組,因為噴泉碼 是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè)數(shù)量的編碼分組解碼 出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳輸?shù)目煽啃?另外,由 于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息,相較于現(xiàn)有技術(shù)中只 要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴泉碼減少了信道中反 饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
[0200] 實施例四
[0201] 圖5示出了本發(fā)明實施例四提供的文件下載方法的流程示意圖。本實施例提供的 所述方法可適用于服務(wù)器端。本實施例提供的所述方法的執(zhí)行主體可W是文件下載裝置, 該文件下載裝置可W是安裝在服務(wù)器端設(shè)備上的硬件實體或應(yīng)用程序。如圖5所示,本實施 例四提供的所述方法,包括:
[0202] 步驟401、接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的 標識。
[0203] 步驟402、若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地存儲 所述文件標識對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其中,所述 噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù)。
[0204] 步驟403、向所述客戶端發(fā)送所述N個編碼分組。
[0205] 運里需要說明的是:可采用UDP協(xié)議向所述客戶端發(fā)送所述N個編碼分組,采用UDP 協(xié)議可W減少傳輸過程中的協(xié)議數(shù)據(jù)的傳輸量,即便存在數(shù)據(jù)丟包在噴泉碼的編碼保證下 也能順利的、安全的還原數(shù)據(jù)。
[0206] 步驟404、接收到所述客戶端發(fā)送的反饋信息后,停止向所述客戶端發(fā)送所述N個 編碼分組。
[0207] 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的, 所述預(yù)設(shè)數(shù)量大于所述K。在具體實施時,所述預(yù)設(shè)數(shù)量可W等于K(l+〇,e為預(yù)設(shè)的譯碼開 銷。譯碼開銷可人為設(shè)定,當然譯碼開銷越大,基于接收到的編碼分組恢復(fù)出全部原始分組 的概率也就越大。在具體實施時,技術(shù)人員可根據(jù)多次試驗找到較為合適的譯碼開銷值。 [020引步驟405、若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地未存 儲所述文件標識對應(yīng)的文件,則向網(wǎng)絡(luò)中的其他客戶端發(fā)送查詢請求,其中,所述查詢請求 中攜帶有所述文件的文件標識。
[0209] 步驟406、若所述網(wǎng)絡(luò)中存在有存儲有所述文件的客戶端,則接收所述客戶端發(fā)送 的噴泉碼數(shù)據(jù)。
[0210] 運里需要說明的是所述網(wǎng)絡(luò)可W包括P2SP網(wǎng)絡(luò)、BT網(wǎng)絡(luò),ed2k網(wǎng)絡(luò)等中的一種網(wǎng) 絡(luò)或任意多種網(wǎng)絡(luò)。
[0211] 步驟407、基于接收到的所述噴泉碼數(shù)據(jù)中包含的L個編碼分組,解碼出所述文件 的數(shù)據(jù)。
[0212] 其中,L〉K,所述K為在生成所述噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到的原始 數(shù)據(jù)分組的數(shù)量,所述K為大于或等于2的整數(shù)。所述L可W等于K(l + 0,e為預(yù)設(shè)的譯碼開 銷。譯碼開銷可人為設(shè)定,當然譯碼開銷越大,基于接收到的編碼分組恢復(fù)出全部原始分組 的概率也就越大。在具體實施時,技術(shù)人員可根據(jù)多次試驗找到較為合適的譯碼開銷值。
[0213] 步驟408、若所述網(wǎng)絡(luò)中不存在有存儲有所述文件的客戶端,則向所述客戶端發(fā)出 無法獲取所述文件的提示信息。
[0214] 本發(fā)明實施例提供的技術(shù)方案,通過將待傳輸?shù)哪繕宋募姆謮K數(shù)據(jù)編碼成噴泉 碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā)送,直到接收到客戶 端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編碼分組,因為噴泉碼 是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè)數(shù)量的編碼分組解碼 出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳輸?shù)目煽啃?另外,由 于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息,相較于現(xiàn)有技術(shù)中只 要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴泉碼減少了信道中反 饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
[0215] 需要說明的是:對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列 的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為 依據(jù)本發(fā)明,某些步驟可W采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知 悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所設(shè)及的動作和模塊并不一定是本發(fā)明 所必須的。
[0216] 實施五
[0217] 如圖6示出了本發(fā)明實施例五提供的文件下載裝置的結(jié)構(gòu)示意圖。為了便于說明, 僅示出了與本發(fā)明實施例相關(guān)的部分,具體技術(shù)細節(jié)未掲示的,請參照本發(fā)明實施例方法 部分。該文件下載裝置可W是安裝在客戶端設(shè)備上的硬件實體或應(yīng)用程序。其中,所述客戶 端設(shè)備可W是:計算機、筆記本計算機、手機、平板電腦、PDA(Personal Digital Assistant,個人數(shù)字助理)、P0S^oint of Sales,銷售終端)、車載電腦等任意終端設(shè)備。 如圖6所示,本實施例五提供的所述文件下載裝置,包括:獲取模塊501、編碼模塊502及發(fā)送 模塊503。其中,
[0218] 獲取模塊501用于獲取下載同一文件的客戶端列表;
[0219] 編碼模塊502用于將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼 數(shù)據(jù),其中,所述第一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0220] 發(fā)送模塊503用于向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個 編碼分組。
[0221] 本發(fā)明實施例提供的技術(shù)方案,通過將待傳輸?shù)哪繕宋募姆謮K數(shù)據(jù)編碼成噴泉 碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā)送,直到接收到客戶 端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編碼分組,因為噴泉碼 是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè)數(shù)量的編碼分組解碼 出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳輸?shù)目煽啃?另外,由 于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息,相較于現(xiàn)有技術(shù)中只 要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴泉碼減少了信道中反 饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
[0222] 運里需要說明的是:本實施例提供的所述文件下載裝置可實現(xiàn)上述實施例一或?qū)?施例二中所提供的文件下載方法,具體的實現(xiàn)細節(jié)可參見上述內(nèi)容,此處不再寶述。
[022;3]實施六
[0224] 本發(fā)明實施例六基于上述實施例五提供的文件下載裝置對本發(fā)明提供的技術(shù)方 案進行進一步的說明。為了便于描述,僅示出了與本發(fā)明實施例相關(guān)的部分,具體技術(shù)細節(jié) 未掲示的,請參照本發(fā)明實施例方法部分。該文件下載裝置可W是安裝在客戶端設(shè)備上的 硬件實體或應(yīng)用程序。其中所述客戶端設(shè)備可W是:計算機、筆記本計算機、手機、平板電 腦、PDA(Personal Digital Assistant,個人數(shù)字助理)、P0S(F*oint of Sales,銷售終端)、 車載電腦等任意終端設(shè)備。本實施例六基于所述實施例五,提供的所述文件下載裝置中,所 述編碼模塊可采用如下方法實現(xiàn)。具體的,所述編碼模塊包括:分組單元和編碼單元。其中, 分組單元用于將存儲在本地的所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組。編碼單 元用于對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組。其中,K為大于或等于2 的整數(shù),N為大于零的整數(shù)。
[0225] 進一步的,所述的發(fā)送模塊還可用于在接收到所述客戶端發(fā)送的反饋信息后,停 止向所述客戶端發(fā)送所述N個編碼分組;其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù) 量的所述編碼分組后發(fā)出的,所述預(yù)設(shè)數(shù)量大于所述K。
[0226] 進一步的,所述文件下載裝置還可包括:第一接收模塊和第一解碼模塊。其中,第 一接收模塊,用于接收客戶端發(fā)送的第二噴泉碼數(shù)據(jù);第一解碼模塊,用于基于接收到的所 述第二噴泉碼數(shù)據(jù)中包含的M個編碼分組,解碼出所述第二噴泉碼數(shù)據(jù)對應(yīng)的數(shù)據(jù);其中,M 〉M',所述r為在生成所述第二噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到的原始數(shù)據(jù)分組 的數(shù)量,所述M'為大于或等于2的整數(shù)。
[0227] 進一步的,所述文件下載裝置還可包括:
[0228] 所述發(fā)送模塊,還用于當無法接收到所述客戶端列表中的客戶端發(fā)送的數(shù)據(jù)時, 向服務(wù)器端發(fā)送下載請求,所述下載請求中攜帶有欲下載文件標識;
[0229] 第二接收模塊,用于接收所述服務(wù)器端發(fā)送的所述欲下載文件標識對應(yīng)的文件數(shù) 據(jù)的噴泉碼數(shù)據(jù);
[0230] 第二解碼模塊,用于基于接收到的所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)中包含的S個編碼 分組,解碼出所述欲下載文件的文件數(shù)據(jù);
[0231] 其中,S〉S',所述S'為在生成所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)過程中將所述欲下載文 件的文件數(shù)據(jù)進行分組后得到的原始數(shù)據(jù)分組的數(shù)量,所述S'為大于或等于2的整數(shù)。
[0232] 進一步的,所述第二接收模塊,還用于接收所述服務(wù)器端發(fā)送的調(diào)度信息,并根據(jù) 所述調(diào)度信息,向所述調(diào)度信息指定的客戶端發(fā)送所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)。
[0233] 進一步的,所述文件下載裝置還可包括:第=接收模塊,用于接收服務(wù)器端發(fā)送的 查詢請求,其中,所述查詢請求中攜帶有欲查詢文件標識;
[0234] 所述編碼模塊,還用于當本地存儲有所述欲查詢文件標識對應(yīng)的文件數(shù)據(jù)時,將 所述欲查詢文件的文件數(shù)據(jù)進行編碼,生成對應(yīng)的噴泉碼數(shù)據(jù);
[0235] 所述發(fā)送模塊,還用于向所述服務(wù)器端發(fā)送所述欲查詢文件對應(yīng)的噴泉碼數(shù)據(jù)。
[0236] 發(fā)送模塊,用于采用用戶數(shù)據(jù)報協(xié)議UDP向所述客戶端列表中請求下載所述數(shù)據(jù) 的客戶端發(fā)送所述第一噴泉碼數(shù)據(jù)。
[0237] 本發(fā)明實施例提供的技術(shù)方案,通過將待傳輸?shù)哪繕宋募姆謮K數(shù)據(jù)編碼成噴泉 碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā)送,直到接收到客戶 端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編碼分組,因為噴泉碼 是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè)數(shù)量的編碼分組解碼 出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳輸?shù)目煽啃?另外,由 于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息,相較于現(xiàn)有技術(shù)中只 要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴泉碼減少了信道中反 饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
[0238] 運里需要說明的是:本實施例提供的所述文件下載裝置可實現(xiàn)上述實施例一或?qū)?施例二中所提供的文件下載方法,具體的實現(xiàn)細節(jié)可參見上述內(nèi)容,此處不再寶述。
[0239] 實施屯
[0240] 如圖7示出了本發(fā)明實施例屯提供的文件下載裝置的結(jié)構(gòu)示意圖。如圖7所示,本 實施例屯提供的所述文件下載裝置,包括:接收模塊701、編碼模塊702和發(fā)送模塊703。其 中,
[0241] 接收模塊701用于接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述 文件的標識;
[0242] 編碼模塊702用于當網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且 本地存儲所述文件標識對應(yīng)的文件時,將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其 中,所述噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0243] 發(fā)送模塊703用于向所述客戶端發(fā)送所述N個編碼分組。
[0244] 本發(fā)明實施例提供的技術(shù)方案,通過將待傳輸?shù)哪繕宋募姆謮K數(shù)據(jù)編碼成噴泉 碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā)送,直到接收到客戶 端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編碼分組,因為噴泉碼 是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè)數(shù)量的編碼分組解碼 出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳輸?shù)目煽啃?另外,由 于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息,相較于現(xiàn)有技術(shù)中只 要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴泉碼減少了信道中反 饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
[0245] 運里需要說明的是:本實施例提供的所述文件下載裝置可實現(xiàn)上述實施例=或?qū)?施例四中所提供的文件下載方法,具體的實現(xiàn)細節(jié)可參見上述內(nèi)容,此處不再寶述。
[0246] 實施八
[0247] 本發(fā)明實施例八基于上述實施例屯提供的文件下載裝置對本發(fā)明提供的技術(shù)方 案進行進一步的說明。本實施例八基于所述實施例屯,提供的所述文件下載裝置中,所述編 碼模塊可采用如下方法實現(xiàn)。具體的,所述編碼模塊包括:分組單元和編碼單元。其中,分組 單元用于將所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組;編碼單元用于對所述K個 原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組;其中,K為大于或等于2的整數(shù),N為大于 零的整數(shù)。
[0248] 進一步的,所述發(fā)送模塊,還用于接收到所述客戶端發(fā)送的反饋信息后,停止向所 述客戶端發(fā)送所述N個編碼分組;其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所 述編碼分組后發(fā)出的,所述預(yù)設(shè)數(shù)量大于所述K。
[0249] 進一步的,本實施例提供所述的文件下載裝置,還包括:
[0250] 所述發(fā)送模塊,還用于當網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶 端,且本地未存儲所述文件標識對應(yīng)的文件時,向網(wǎng)絡(luò)中的其他客戶端發(fā)送查詢請求,其 中,所述查詢請求中攜帶有所述文件的文件標識;
[0251] 所述接收模塊,還用于當所述網(wǎng)絡(luò)中存在有存儲有所述文件的客戶端時,接收所 述客戶端發(fā)送的噴泉碼數(shù)據(jù);
[0252] 解碼模塊,用于基于接收到的所述噴泉碼數(shù)據(jù)中包含的L個編碼分組,解碼出所述 文件的數(shù)據(jù);
[0253] 其中,L〉K,所述K為在生成所述噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到的原始 數(shù)據(jù)分組的數(shù)量,所述K為大于或等于2的整數(shù)。
[0254] 進一步的,本實施例提供的所述文件下載裝置中,所述發(fā)送模塊,具體用于采用用 戶數(shù)據(jù)報協(xié)議UDP向所述客戶端發(fā)送所述N個編碼分組。
[0255] 本發(fā)明實施例提供的技術(shù)方案,通過將待傳輸?shù)哪繕宋募姆謮K數(shù)據(jù)編碼成噴泉 碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā)送,直到接收到客戶 端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編碼分組,因為噴泉碼 是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè)數(shù)量的編碼分組解碼 出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳輸?shù)目煽啃?另外,由 于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息,相較于現(xiàn)有技術(shù)中只 要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴泉碼減少了信道中反 饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
[0256] 運里需要說明的是:本實施例提供的所述文件下載裝置可實現(xiàn)上述實施例=或?qū)?施例四中所提供的文件下載方法,具體的實現(xiàn)細節(jié)可參見上述內(nèi)容,此處不再寶述。
[0257] 實施例九
[0258] 如圖1所示,本發(fā)明實施例九提供的一種網(wǎng)絡(luò)系統(tǒng)包括適用于客戶端的文件下載 裝置W及適用于服務(wù)器端的文件下載裝置;其中,
[0259] 所述適用于客戶端的文件下載裝置用于:
[0260] 獲取下載同一文件的客戶端列表;
[0261 ]將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其中,所述第 一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0262] 向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組;
[0263] 所述適用于服務(wù)器端的文件下載裝置用于:
[0264] 接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的標識;
[0265] 若本地存儲所述文件標識對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴 泉碼數(shù)據(jù),其中,所述噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0266] 向所述客戶端發(fā)送所述N個編碼分組。
[0267] 其中,所述適用于客戶端的文件下載裝置可W是安裝在客戶端設(shè)備上的硬件實體 或應(yīng)用程序,所述適用于服務(wù)器端的文件下載裝置可W是安裝在服務(wù)器端設(shè)備上的硬件實 體或應(yīng)用程序。
[0268] 本發(fā)明實施例提供的技術(shù)方案,通過將待傳輸?shù)哪繕宋募姆謮K數(shù)據(jù)編碼成噴泉 碼數(shù)據(jù),并基于噴泉碼數(shù)據(jù)的特點源源不斷地向請求下載的客戶端發(fā)送,直到接收到客戶 端發(fā)送反饋信息后停止,即便是在網(wǎng)絡(luò)環(huán)境較差的情況下丟失部分編碼分組,因為噴泉碼 是源源不斷發(fā)送的,接收客戶端還是能繼續(xù)接收并能基于接收到預(yù)設(shè)數(shù)量的編碼分組解碼 出對應(yīng)的分塊數(shù)據(jù),顯然本發(fā)明實施例提供的技術(shù)方案提高了數(shù)據(jù)傳輸?shù)目煽啃?另外,由 于接收客戶端只有在接收到預(yù)設(shè)數(shù)量的編碼分組后才發(fā)出反饋信息,相較于現(xiàn)有技術(shù)中只 要有一次傳輸失敗就要反饋一次重傳請求,本發(fā)明實施例因采用了噴泉碼減少了信道中反 饋信息的傳輸,有助于提高信道容量,使得網(wǎng)絡(luò)更加健壯。
[0269] 運里需要說明的是:本實施例提供的所述網(wǎng)絡(luò)系統(tǒng)中包含的適用于客戶端的文件 下載裝置可實現(xiàn)上述實施例一或?qū)嵤├峁┑乃龇椒ǎ唧w的過程可參見上述實施例 中的相應(yīng)內(nèi)容,此處不再寶述。本實施例提供的所述網(wǎng)絡(luò)系統(tǒng)中包含的適用于服務(wù)器端的 文件下載裝置可實現(xiàn)上述實施例=或?qū)嵤├奶峁┑乃龇椒?,具體的過程可參見上述實 施例中的相應(yīng)內(nèi)容,此處不再寶述。
[0270] 實施例十
[0271] 本申請實施例提供一種文件下載裝置,適用于客戶端,包括存儲器W及一個或者 多個處理器,其中,文件下載裝置還包括:
[0272] -個或多個單元,所述一個或多個單元被存儲在所述存儲器中并被配置成由所述 一個或多個處理器執(zhí)行,所述一個或多個單元包括用于執(zhí)行W下步驟的指令:
[0273] 獲取下載同一文件的客戶端列表;
[0274] 將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其中,所述第 一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0275] 向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組。
[0276] 實施例^^一
[0277] 本發(fā)明實施例提供一種與文件下載裝置結(jié)合使用的計算機程序產(chǎn)品,所述計算機 程序產(chǎn)品包括計算機可讀的存儲介質(zhì)和內(nèi)嵌于其中的計算機程序機制,所述計算機程序機 制包括執(zhí)行W下步驟的指令:
[0278] 獲取下載同一文件的客戶端列表;
[0279] 將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其中,所述第 一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0280] 向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組。
[0281] 實施例十二
[0282] 本發(fā)明實施例提供一種文件下載裝置,適用于服務(wù)器端,包括存儲器W及一個或 者多個處理器,其中,文件下載裝置還包括:
[0283] -個或多個單元,所述一個或多個單元被存儲在所述存儲器中并被配置成由所述 一個或多個處理器執(zhí)行,所述一個或多個單元包括用于執(zhí)行W下步驟的指令:
[0284] 接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的標識;
[0285] 若本地存儲所述文件標識對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴 泉碼數(shù)據(jù),其中,所述噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0286] 向所述客戶端發(fā)送所述N個編碼分組。
[0287] 實施例十S
[0288] 本發(fā)明實施例提供一種與文件下載裝置結(jié)合使用的計算機程序產(chǎn)品,所述計算機 程序產(chǎn)品包括計算機可讀的存儲介質(zhì)和內(nèi)嵌于其中的計算機程序機制,所述計算機程序機 制包括執(zhí)行W下步驟的指令:
[0289] 接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的標識;
[0290] 若本地存儲所述文件標識對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴 泉碼數(shù)據(jù),其中,所述噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù);
[0291 ]向所述客戶端發(fā)送所述N個編碼分組。
[0292] 所屬領(lǐng)域的技術(shù)人員可W清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng), 裝置和單元的具體工作過程,可W參考前述方法實施例中的對應(yīng)過程,在此不再寶述。
[0293] W上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可 W是或者也可W不是物理上分開的,作為單元顯示的部件可W是或者也可W不是物理單 元,即可W位于一個地方,或者也可W分布到多個網(wǎng)絡(luò)單元上。可W根據(jù)實際的需要選擇其 中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性 的勞動的情況下,即可W理解并實施。
[0294] 通過W上的實施方式的描述,本領(lǐng)域的技術(shù)人員可W清楚地了解到各實施方式可 借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可W通過硬件?;谶\樣的理解,上 述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可WW軟件產(chǎn)品的形式體現(xiàn)出來,該 計算機軟件產(chǎn)品可W存儲在計算機可讀存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指 令用W使得一臺計算機設(shè)備(可W是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實施 例或者實施例的某些部分所述的方法。
[0295]最后應(yīng)說明的是:W上實施例僅用W說明本發(fā)明的技術(shù)方案,而非對其限制;盡管 參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可 W對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換; 而運些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和 范圍。
【主權(quán)項】
1. 一種文件下載方法,適用于客戶端,其特征在于,包括: 獲取下載同一文件的客戶端列表; 將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其中,所述第一噴 泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù); 向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分組。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將存儲在本地的所述文件中的數(shù)據(jù)進 行編碼,生成第一噴泉碼數(shù)據(jù),包括: 將存儲在本地的所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組; 對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組; 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù),所述N個編碼分組構(gòu)成所述第一噴泉 碼數(shù)據(jù)。3. 根據(jù)權(quán)利要求2所述的所述方法,其特征在于,還包括: 接收到所述客戶端發(fā)送的反饋信息后,停止向所述客戶端發(fā)送所述N個編碼分組; 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的,所述 預(yù)設(shè)數(shù)量大于所述K。4. 根據(jù)權(quán)利要求1~3中所述的方法,其特征在于,還包括: 接收客戶端發(fā)送的第二噴泉碼數(shù)據(jù); 基于接收到的所述第二噴泉碼數(shù)據(jù)中包含的Μ個編碼分組,解碼出所述第二噴泉碼數(shù) 據(jù)對應(yīng)的數(shù)據(jù); 其中,Μ>Μ',所述Μ'為在生成所述第二噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到的原 始數(shù)據(jù)分組的數(shù)量,所述Μ'為大于或等于2的整數(shù)。5. 根據(jù)權(quán)利要求1~3所述的方法,其特征在于,還包括: 若無法接收到所述客戶端列表中的客戶端發(fā)送的數(shù)據(jù),則向服務(wù)器端發(fā)送下載請求, 所述下載請求中攜帶有欲下載文件標識; 接收所述服務(wù)器端發(fā)送的所述欲下載文件標識對應(yīng)的文件數(shù)據(jù)的噴泉碼數(shù)據(jù); 基于接收到的所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)中包含的S個編碼分組,解碼出所述欲下載 文件的文件數(shù)據(jù); 其中,S>S',所述S'為在生成所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)過程中將所述欲下載文件的 文件數(shù)據(jù)進行分組后得到的原始數(shù)據(jù)分組的數(shù)量,所述S'為大于或等于2的整數(shù)。6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 接收所述服務(wù)器端發(fā)送的調(diào)度信息,并根據(jù)所述調(diào)度信息,向所述調(diào)度信息指定的客 戶端發(fā)送所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)。7. 根據(jù)權(quán)利要求1~3中任一項所述的方法,其特征在于,還包括: 接收服務(wù)器端發(fā)送的查詢請求,其中,所述查詢請求中攜帶有欲查詢文件標識; 若本地存儲有所述欲查詢文件標識對應(yīng)的文件數(shù)據(jù),則將所述欲查詢文件的文件數(shù)據(jù) 進行編碼,生成對應(yīng)的噴泉碼數(shù)據(jù); 向所述服務(wù)器端發(fā)送所述欲查詢文件對應(yīng)的噴泉碼數(shù)據(jù)。8. 根據(jù)權(quán)利要求1~3中任一項所述的方法,其特征在于,所述向所述客戶端列表中請 求下載所述數(shù)據(jù)的客戶端發(fā)送所述第一噴泉碼數(shù)據(jù),具體為: 采用用戶數(shù)據(jù)報協(xié)議UDP向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述第 一噴泉碼數(shù)據(jù)。9. 一種文件下載方法,適用于服務(wù)器端,其特征在于,包括: 接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的標識; 若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地存儲所述文件標識 對應(yīng)的文件,則將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其中,所述噴泉碼數(shù)據(jù)中 包含有N個編碼分組,N為大于零的整數(shù); 向所述客戶端發(fā)送所述N個編碼分組。10. 根據(jù)權(quán)利要求9所述的方法,其特征在于,所述將所述文件中的數(shù)據(jù)進行編碼,生成 噴泉碼數(shù)據(jù),包括: 將所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組; 對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組; 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù)。11. 根據(jù)權(quán)利要求10所述的方法,其特征在于,還包括: 接收到所述客戶端發(fā)送的反饋信息后,停止向所述客戶端發(fā)送所述N個編碼分組; 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的,所述 預(yù)設(shè)數(shù)量大于所述K。12. 根據(jù)權(quán)利要求9~11中任一項所述的方法,其特征在于,還包括: 若網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地未存儲所述文件標 識對應(yīng)的文件,則向網(wǎng)絡(luò)中的其他客戶端發(fā)送查詢請求,其中,所述查詢請求中攜帶有所述 文件的文件標識; 若所述網(wǎng)絡(luò)中存在有存儲有所述文件的客戶端,則接收所述客戶端發(fā)送的噴泉碼數(shù) 據(jù); 基于接收到的所述噴泉碼數(shù)據(jù)中包含的L個編碼分組,解碼出所述文件的數(shù)據(jù); 其中,L>K,所述K為在生成所述噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到的原始數(shù)據(jù) 分組的數(shù)量,所述K為大于或等于2的整數(shù)。13. 根據(jù)權(quán)利要求9~11中任一項所述的方法,其特征在于,所述向所述客戶端發(fā)送所 述N個編碼分組,具體為: 采用用戶數(shù)據(jù)報協(xié)議UDP向所述客戶端發(fā)送所述N個編碼分組。14. 一種文件下載裝置,其特征在于,包括: 獲取模塊,用于獲取下載同一文件的客戶端列表; 編碼模塊,用于將存儲在本地的所述文件中的數(shù)據(jù)進行編碼,生成第一噴泉碼數(shù)據(jù),其 中,所述第一噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù); 發(fā)送模塊,用于向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述N個編碼分 組。15. 根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述編碼模塊,包括: 分組單元,用于將存儲在本地的所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組; 編碼單元,用于對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組; 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù),所述N個編碼分組構(gòu)成所述第一噴泉 碼數(shù)據(jù)。16. 根據(jù)權(quán)利要求15所述的裝置,其特征在于,還包括: 所述發(fā)送模塊,還用于在接收到所述客戶端發(fā)送的反饋信息后,停止向所述客戶端發(fā) 送所述N個編碼分組; 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的,所述 預(yù)設(shè)數(shù)量大于所述K。17. 根據(jù)權(quán)利要求14~16中任一項所述的裝置,其特征在于,還包括: 第一接收模塊,用于接收客戶端發(fā)送的第二噴泉碼數(shù)據(jù); 第一解碼模塊,用于基于接收到的所述第二噴泉碼數(shù)據(jù)中包含的Μ個編碼分組,解碼出 所述第二噴泉碼數(shù)據(jù)對應(yīng)的數(shù)據(jù); 其中,Μ>Μ',所述Μ'為在生成所述第二噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到的原 始數(shù)據(jù)分組的數(shù)量,所述Μ'為大于或等于2的整數(shù)。18. 根據(jù)權(quán)利要求14~16中任一項所述的裝置,其特征在于,還包括: 所述發(fā)送模塊,還用于當無法接收到所述客戶端列表中的客戶端發(fā)送的數(shù)據(jù)時,向服 務(wù)器端發(fā)送下載請求,所述下載請求中攜帶有欲下載文件標識; 第二接收模塊,用于接收所述服務(wù)器端發(fā)送的所述欲下載文件標識對應(yīng)的文件數(shù)據(jù)的 噴泉碼數(shù)據(jù); 第二解碼模塊,用于基于接收到的所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)中包含的S個編碼分組, 解碼出所述欲下載文件的文件數(shù)據(jù); 其中,s>s',所述S'為在生成所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)過程中將所述欲下載文件的 文件數(shù)據(jù)進行分組后得到的原始數(shù)據(jù)分組的數(shù)量,所述s'為大于或等于2的整數(shù)。19. 根據(jù)權(quán)利要求18所述的裝置,其特征在于, 所述第二接收模塊,還用于接收所述服務(wù)器端發(fā)送的調(diào)度信息,并根據(jù)所述調(diào)度信息, 向所述調(diào)度信息指定的客戶端發(fā)送所述文件數(shù)據(jù)的噴泉碼數(shù)據(jù)。20. 根據(jù)權(quán)利要求14~16中任一項所述的文件下載裝置,其特征在于,還包括: 第三接收模塊,用于接收服務(wù)器端發(fā)送的查詢請求,其中,所述查詢請求中攜帶有欲查 詢文件標識; 所述編碼模塊,還用于當本地存儲有所述欲查詢文件標識對應(yīng)的文件數(shù)據(jù)時,將所述 欲查詢文件的文件數(shù)據(jù)進行編碼,生成對應(yīng)的噴泉碼數(shù)據(jù); 所述發(fā)送模塊,還用于向所述服務(wù)器端發(fā)送所述欲查詢文件對應(yīng)的噴泉碼數(shù)據(jù)。21. 根據(jù)權(quán)利要求14~16中任一項所述的裝置,其特征在于,所述發(fā)送模塊,具體用于 采用用戶數(shù)據(jù)報協(xié)議UDP向所述客戶端列表中請求下載所述數(shù)據(jù)的客戶端發(fā)送所述第一噴 泉碼數(shù)據(jù)。22. -種文件下載裝置,其特征在于,包括: 接收模塊,用于接收客戶端發(fā)送的下載請求,其中,所述下載請求中攜帶有所述文件的 標識; 編碼模塊,用于當網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且本地存 儲所述文件標識對應(yīng)的文件時,將所述文件中的數(shù)據(jù)進行編碼,生成噴泉碼數(shù)據(jù),其中,所 述噴泉碼數(shù)據(jù)中包含有N個編碼分組,N為大于零的整數(shù); 發(fā)送模塊,用于向所述客戶端發(fā)送所述N個編碼分組。23. 根據(jù)權(quán)利要求22所述的裝置,其特征在于,所述編碼模塊,包括: 分組單元,用于將所述文件中的數(shù)據(jù)進行分組,得到K個原始數(shù)據(jù)分組; 編碼單元,用于對所述K個原始數(shù)據(jù)分組進行噴泉碼編碼,生成N個編碼分組; 其中,K為大于或等于2的整數(shù),N為大于零的整數(shù)。24. 根據(jù)權(quán)利要求23所述的裝置,其特征在于, 所述發(fā)送模塊,還用于接收到所述客戶端發(fā)送的反饋信息后,停止向所述客戶端發(fā)送 所述N個編碼分組; 其中,所述反饋信息是所述客戶端在接收到預(yù)設(shè)數(shù)量的所述編碼分組后發(fā)出的,所述 預(yù)設(shè)數(shù)量大于所述K。25. 根據(jù)權(quán)利要求22~24中任一項所述的裝置,其特征在于,還包括: 所述發(fā)送模塊,還用于當網(wǎng)絡(luò)中不存在存儲有所述文件標識對應(yīng)的文件的客戶端,且 本地未存儲所述文件標識對應(yīng)的文件時,向網(wǎng)絡(luò)中的其他客戶端發(fā)送查詢請求,其中,所述 查詢請求中攜帶有所述文件的文件標識; 所述接收模塊,還用于當所述網(wǎng)絡(luò)中存在有存儲有所述文件的客戶端時,接收所述客 戶端發(fā)送的噴泉碼數(shù)據(jù); 解碼模塊,用于基于接收到的所述噴泉碼數(shù)據(jù)中包含的L個編碼分組,解碼出所述文件 的數(shù)據(jù); 其中,L>K,所述K為在生成所述噴泉碼數(shù)據(jù)過程中將數(shù)據(jù)進行分組后得到的原始數(shù)據(jù) 分組的數(shù)量,所述K為大于或等于2的整數(shù)。26. 根據(jù)權(quán)利要求22~24中任一項所述的裝置,其特征在于, 所述發(fā)送模塊,具體用于采用用戶數(shù)據(jù)報協(xié)議UDP向所述客戶端發(fā)送所述N個編碼分 組。27. -種文件下載系統(tǒng),其特征在于,包括上述權(quán)利要求14~21中任一項所述的文件下 載裝置以及上述權(quán)利要求22~26中任一項所述的文件下載裝置。
【文檔編號】H04L29/08GK105979003SQ201610509196
【公開日】2016年9月28日
【申請日】2016年6月30日
【發(fā)明人】陳翔, 胡勇
【申請人】樂視控股(北京)有限公司, 樂視網(wǎng)信息技術(shù)(北京)股份有限公司