一種基于第三方消息中間件的文件傳輸方法
【技術(shù)領域】
[0001] 本發(fā)明涉及的是一種文件分塊傳輸技術(shù)。 (二)
【背景技術(shù)】
[0002] 隨著計算機網(wǎng)絡的發(fā)展,文件傳輸技術(shù)的應用范圍越來越多廣泛。文件傳輸技術(shù) 為用戶提供快速、安全、便捷的跨網(wǎng)絡文件傳輸服務。其中,文件傳輸方法是文件傳輸技術(shù) 的核心,直接決定著文件傳輸?shù)陌踩浴⒖煽啃砸约胺召|(zhì)量。然而,安全、可靠的網(wǎng)絡傳輸 過程設計與實現(xiàn)較復雜,所以設計一種簡單、快速的文件傳輸方法對文件傳輸系統(tǒng)具有重 要意義。
[0003] 第三方消息中間件通過對SOCKET套接字進行封裝,在數(shù)據(jù)傳輸雙方之間建立可 靠的數(shù)據(jù)傳輸通路,避免了基于SOCKET通信過程中的復雜配置。然而,消息中間件單次消 息傳輸?shù)臄?shù)據(jù)量有限,無法直接完成大容量文件的傳輸。將消息中間件對SOCKET封裝的特 性用于文件傳輸系統(tǒng),可降低文件傳輸系統(tǒng)設計的復雜度。 (三)
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提出一種基于第三方消息中間件的文件傳輸方法。將文件數(shù)據(jù)抽象為文件 消息,發(fā)送方將文件切分為文件塊數(shù)據(jù)和文件塊信息,并把這兩部分合并成的文件消息通 過第三方消息中間件傳輸至文件接收方,文件接收方將接收到的文件消息解析還原為原始 文件。通過該方法能在很大程度上簡化文件傳輸系統(tǒng)的實現(xiàn)過程,從而節(jié)省系統(tǒng)開銷。本 方法通過采用多消息傳輸隊列并發(fā)傳輸方式,提高了文件的傳輸速度。同時,本方法中采用 加密傳輸?shù)姆绞?,保證了傳輸過程中文件的安全性。
[0005] 本發(fā)明的是這樣實現(xiàn)的:
[0006] 首先,利用第三方消息中間件在文件發(fā)送方和接收方之間建立多個并發(fā)消息傳輸 隊列。發(fā)送方根據(jù)第三方中間件要求的消息長度把文件切分成若干個文件塊,并為每一個 文件塊添加對應的文件塊信息組成文件消息,然后通過消息傳輸隊列將消息并發(fā)發(fā)送至接 收方。接收方從接收到的消息解析出文件塊數(shù)據(jù)和文件塊信息。然后,依據(jù)文件塊信息將 文件塊數(shù)據(jù)合并成完整文件。最后,通過MD5值驗證文件的完整性。
[0007] 文件塊在作為消息進行傳輸過程中涉及到如下參數(shù)信息:文件大小為sf,文件塊 消息為M,M中的文件塊數(shù)據(jù)內(nèi)容為D,文件塊信息為I,I中包括文件名Fn、文件數(shù)據(jù)塊默認 大小Sd、文件數(shù)據(jù)塊序號Fs、文件的MD5值E、文件數(shù)據(jù)塊總數(shù)N、文件塊數(shù)據(jù)實際大小
[0008] 其發(fā)送方具體方法步驟為:
[0009] (1)配置第三方消息中間件,初始化消息傳輸?shù)募用芩惴ǎ?br>[0010] ⑵發(fā)送方設置Fn、Sd、E、Sr、Sf,計算及=pf,初始化Fs= 0 ;
[0011] (3)計算文件讀取位置1?:1?=匕\5(1,發(fā)送方從文件的1?處讀取5 (1大小的文件數(shù) 據(jù)存入D;
[0012] (4)計算D中文件數(shù)據(jù)實際大小&=Size(D),并將Fn、Sd、E、&、Sf、N、Fs寫入I 中;
[0013] (5)將D和I合成文件塊消息M,并對M加密;
[0014] (6)選擇當前空閑的消息隊列將M通過消息中間件發(fā)送至接收方;
[0015] (7)判斷M中的匕是否小于N,是則令FS=FS+1,并執(zhí)行步驟(3),否則直接執(zhí)行 步驟(8);
[0016] (8)等待接收方回復文件接收完畢消息,如果接收到接收方回復消息,執(zhí)行步驟 (9),否則執(zhí)行步驟(8);
[0017] (9)根據(jù)接收方回復的消息判斷文件接收是否成功,是則報告文件接收完成并執(zhí) 行步驟(10),否則,報告文件接收存在錯誤并進行文件重傳,執(zhí)行步驟(2);
[0018] (10)執(zhí)行完成;
[0019] 其接收方具體方法步驟為:
[0020] (1)配置第三方消息中間件,初始化消息傳輸?shù)慕饷芩惴ǎ?br>[0021] (2)接收方判斷是否接收到文件消息,是則執(zhí)行步驟(3),否則執(zhí)行步驟⑵;
[0022] (3)將接收到的消息進行解密后存入M,解析出消息中包含的D和I;
[0023] (4)從I解析出Fn、Sd、E、Sr、Sf、N以及Fs;
[0024] (5)檢測接收方文件存儲目錄下是否存在文件Fn,是則執(zhí)行步驟(7),否則執(zhí)行步 驟(6);
[0025] (6)在接收方文件存儲目錄下創(chuàng)建文件Fn;
[0026] (7)根據(jù)計算文件塊數(shù)據(jù)寫入位置W:W=FsXSd,將文件塊數(shù)據(jù)寫入Fn文件的W 位置;
[0027] (8)判斷匕是否小于N,是則執(zhí)行步驟(2),否則執(zhí)行步驟(9);
[0028] (9)計算接收到的Fn文件的MD5值并與原文件的MD5值E是否相等,是則執(zhí)行步 驟(10),否則執(zhí)行步驟(11);
[0029] (10)向發(fā)送方回復成功消息,表明文件Fn已經(jīng)接收完畢,繼續(xù)執(zhí)行步驟(2); [0030] (11)向發(fā)送方回復失敗消息,表明文件Fn接收失??;
[0031] (12)刪除接收方文件存儲目錄下的Fn文件,繼續(xù)執(zhí)行步驟(2);
[0032] 本方法的核心在于:把文件的傳輸過程抽象為消息傳輸過程,提出在文件的發(fā)送 方將文件數(shù)據(jù)分塊,并為每一個文件塊數(shù)據(jù)添加對應的文件塊信息組成文件消息。然后將 文件消息通過消息中間件發(fā)送至接收方。在文件的接收方將消息還原為文件數(shù)據(jù)和文件塊 信息,并根據(jù)文件塊信息對文件塊數(shù)據(jù)進行合并,形成完整的文件。
[0033] 其主要創(chuàng)新點如下:
[0034] 1.將文件傳輸過程轉(zhuǎn)為為消息傳輸過程。通過將文件傳輸過程轉(zhuǎn)換成消息的傳輸 過程,可以基于第三方消息中間件對文件傳輸系統(tǒng)進行快速搭建,并能節(jié)約系統(tǒng)構(gòu)建的時 間、人力等開銷。
[0035] 2.采用多消息隊列的并發(fā)傳輸方式,并增加MD5驗證。本方法通過采用多消息傳 輸隊列并發(fā)傳輸方式,提高了文件的傳輸速度。接收方按照文件塊信息對文件進行合并后, 對合并后的文件進行MD5驗證,保證了傳輸過程中文件的完整性。 (四)
【附圖說明】
[0036] 圖1文件分塊傳輸方法示意圖 (五) 具體的實施方式
[0037] 本發(fā)明所述方法的特征在于:
[0038] 將文件數(shù)據(jù)抽象為文件消息,發(fā)送方將文件合理分割為文件塊數(shù)據(jù),并為每一塊 文件塊數(shù)據(jù)添加對應的文件塊信息組成文件消息,然后通過第三方消息中間件將文件塊消 息快速并發(fā)地傳輸至文件接收方,接收方按照文件塊信息合并文件塊數(shù)據(jù),形成完整文件。
[0039] 首先,利用第三方消息中間件在文件發(fā)送方和接收方之間建立多個并發(fā)消息傳輸 隊列。發(fā)送方根據(jù)第三方中間件要求的消息長度把文件切分成若干個文件塊,并為每一個 文件塊添加對應的文件塊信息組成文件消息,然后通過消息傳輸隊列將消息并發(fā)發(fā)送至接 收方。接收方從接收到的消息解析出文件塊數(shù)據(jù)和文件塊信息。然后,依據(jù)文件塊信息將 文件塊數(shù)據(jù)合并成完整文件。最后,通過MD5值驗證文件的完整性。本方法通過多消息傳 輸隊列并發(fā)傳輸方式來提高文件的傳輸速度,采用加密傳輸?shù)姆绞奖WC傳輸過程中文件的 安全性。
[0040] 本方法的步驟中