一種基于ftp協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法
【專利摘要】本發(fā)明公開了一種基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法,包括下述步驟:S1、FTP客戶端建立多線程連接,實現(xiàn)文件的多線程上傳;S2、將文件劃分成多個塊,分配給不同的線程上傳,當(dāng)某個線程上傳完一個文件塊后,再分配新的文件塊給該線程;S3、利用多線程并發(fā)上傳每個文件塊尚未上傳的部分,避免了再次上傳已傳輸?shù)臄?shù)據(jù)部分的操作;S4、FTP客戶端另外建立一個線程,專門用于實時記錄臨時配置文件信息。本發(fā)明適用于超大文件的FTP上傳服務(wù),通過多線程并發(fā)上傳的方法,能夠有效縮短上傳超大文件到FTP服務(wù)器所需的時間;通過斷點上傳的方法,避免再次上傳已傳輸?shù)臄?shù)據(jù)部分,減少了傳輸量,進一步節(jié)省了上傳超大文件到FTP服務(wù)器的時間。
【專利說明】一種基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及因特網(wǎng)文件傳輸協(xié)議應(yīng)用領(lǐng)域,特別涉及一種基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法。
【背景技術(shù)】
[0002]FTP (文件傳輸協(xié)議)是當(dāng)前網(wǎng)絡(luò)服務(wù)重要的應(yīng)用之一,它實現(xiàn)了可靠且有效傳輸數(shù)據(jù)的功能;同時,F(xiàn)TP的具有另一項突出的優(yōu)勢:只要進行文件傳輸?shù)南到y(tǒng)都支持FTP協(xié)議,就可以方便地在不同類型的計算機之間進行文件傳輸,使用戶不會因為各類主機文件存儲器系統(tǒng)的差異而受影響。因此,F(xiàn)TP 一直是Internet上廣泛使用的服務(wù)。
[0003]FTP服務(wù)器為客戶提供文件上傳和下載的雙向服務(wù),而當(dāng)前應(yīng)用及研究較多地側(cè)重在FTP的下載技術(shù)上,對于上傳技術(shù)的研究則涉及甚少,尤其是對超大文件有效上傳技術(shù)的研究更少?,F(xiàn)代網(wǎng)絡(luò)的實際應(yīng)用中,經(jīng)常需要傳輸以GB,甚至是TB為單位的超大文件,如多媒體文件等。超大文件上傳效率的高低對于多媒體文件的網(wǎng)絡(luò)共享等應(yīng)用顯得越來越重要。但是,由于這些文件容量巨大,傳輸過程耗時長,上傳過程最容易發(fā)生意外中斷,導(dǎo)致文件重新上傳的操作頻繁,極大影響了數(shù)據(jù)的共享。由此可見,超大文件上傳技術(shù)的研究對于促進網(wǎng)絡(luò)應(yīng)用發(fā)展有著重大的意義。
[0004]傳統(tǒng)的FTP采用單線程上傳文件,上傳速度慢,同時,一旦發(fā)生意外中斷,就需重新上傳文件的全部數(shù)據(jù),極大地影響了上傳的效率。本發(fā)明的目的就是為了提高FTP上傳超大文件的效率,實現(xiàn)了一種支持多線程斷點續(xù)傳功能的FTP上傳文件的方法。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點與不足,提供一種同時支持多線程上傳和斷點續(xù)傳功能的FTP文件上傳方法,能夠有效地提高FTP上傳文件的效率。
[0006]本發(fā)明的技術(shù)方案是:當(dāng)用戶需要上傳文件到FTP服務(wù)器時,可以選擇上傳時使用的線程數(shù)目N,客戶端與服務(wù)器端建立N個線程的數(shù)據(jù)連接,將文件劃分成M個塊(M ≥N),N個線程并發(fā)傳遞同一個文件的不同塊到服務(wù)器,同時,在客戶端建立對應(yīng)的臨時配置文件(用于斷點上傳時,獲取各塊的上傳進度),當(dāng)文件的M個塊都傳輸完畢后,服務(wù)器端按照原有文件的順序,將文件重新組合成原始文件形式,客戶端刪除對應(yīng)的臨時配置文件,最終完成文件的上傳。當(dāng)文件上傳過程中,出現(xiàn)意外中斷的情況,重新與服務(wù)器端建立連接后,客戶端可以從對應(yīng)的臨時配置文件中獲得已經(jīng)上傳了文件的哪些部分的信息,然后采用多線程斷點續(xù)傳的方式,只需要繼續(xù)傳輸未上傳的部分,即可完成整個文件的上傳工作。本發(fā)明的目的通過下述具體技術(shù)方案實現(xiàn):
[0007]基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法,包括下述步驟:
[0008]S1、在不修改原始FTP協(xié)議的情況下,通過FTP客戶端建立多線程連接的方法,實現(xiàn)文件的多線程上傳;
[0009]S2、多線程上傳操作中,F(xiàn)TP客戶端通過多線程方式與FTP服務(wù)器端建立多個連接,連接包括數(shù)據(jù)連接和控制連接,根據(jù)上傳文件的大小和線程數(shù),將文件合理劃分成多個塊,分配給不同的線程上傳,當(dāng)某個線程上傳完一個文件塊后,再分配一個新的文件塊給該線程,保證了所有線程都處于活躍狀態(tài),高效率地完成文件上傳任務(wù);
[0010]S3、斷點上傳操作中,首先從臨時配置文件中讀取斷點信息,用于設(shè)置續(xù)傳時各文件塊的開始位置,然后采取步驟S2的方法,利用多線程并發(fā)上傳每個文件塊尚未上傳的部分,避免了再次上傳已傳輸?shù)臄?shù)據(jù)部分的操作,減少了數(shù)據(jù)傳輸量,縮短了上傳耗時;
[0011]S4、在步驟S2和步驟S3的上傳操作中,F(xiàn)TP客戶端另外建立一個線程,專門用于實時記錄臨時配置文件信息,確保發(fā)生意外中斷時,啟動斷點上傳操作能夠從正確的文件位置開始。
[0012]優(yōu)選的,步驟S2中,還包括在客戶端建立對應(yīng)的臨時配置文件,用來實時記錄斷點上傳時需要的文件信息;當(dāng)文件的所有的塊都傳輸完畢,即文件成功上傳到FTP服務(wù)器后,自動刪除客戶端的臨時配置文件。
[0013]優(yōu)選的,步驟S2中,文件的合理劃分方法是:分塊的大小是設(shè)置的數(shù)據(jù)緩沖區(qū)的整數(shù)倍,最小為I倍;分塊的大小不小于實際建立連接的線程數(shù),每個線程都能分配到上傳任務(wù)。
[0014]優(yōu)選的,斷點上傳過程仍然可以使用多線程,而且可以設(shè)置與初次上傳時不同的線程數(shù)目。
[0015]優(yōu)選的,臨時配置文件包含的信息有:文件在FTP服務(wù)器端存放的完整路徑、文件的大小、文件分成的塊數(shù)、塊的大小、每塊開始位置的偏移量、每塊已上傳的大小、每塊是否已經(jīng)上傳完畢以及傳輸格式。
[0016]優(yōu)選的,步驟S2和步驟S3所指的上傳操作成功完成后,客戶端自動刪除臨時配置文件,節(jié)省磁盤空間。
[0017]本發(fā)明相對于現(xiàn)有技術(shù)具有如下的優(yōu)點及效果:
[0018]本發(fā)明適用于超大文件的FTP上傳服務(wù),通過多線程并發(fā)上傳的方法,能夠有效縮短上傳超大文件到FTP服務(wù)器所需的時間;通過斷點上傳的方法,避免再次上傳已傳輸?shù)臄?shù)據(jù)部分,減少了傳輸量,進一步節(jié)省了上傳超大文件到FTP服務(wù)器的時間。
【專利附圖】
【附圖說明】
[0019]圖1是FTP協(xié)議模型示意圖;
[0020]圖2是本發(fā)明所應(yīng)用的FTP客戶端文件多線程上傳實現(xiàn)流程示意圖;
[0021]圖3是本發(fā)明所應(yīng)用的FTP客戶端文件多線程斷點上傳實現(xiàn)流程示意圖。
【具體實施方式】
[0022]下面結(jié)合實施例及附圖對本發(fā)明作進一步詳細的描述,但本發(fā)明的實施方式不限于此。
[0023]實施例
[0024]FTP協(xié)議模型是一種典型的C/S (客戶端-服務(wù)器)結(jié)構(gòu)。FTP客戶端與FTP服務(wù)器端進行文件傳輸時,建立兩種連接——一種是控制連接,一種是數(shù)據(jù)連接??刂七B接是客戶端與服務(wù)器端通訊的信道,客戶端發(fā)出的FTP操作命令和服務(wù)器返回的應(yīng)答信息都是通過控制連接進行通信的;數(shù)據(jù)連接是客戶端與服務(wù)器端進行文件傳輸?shù)男诺?,上傳或是下載文件數(shù)據(jù)都是通過數(shù)據(jù)連接信道實現(xiàn)的。FTP協(xié)議模型示意圖見圖1。
[0025]由于在FTP服務(wù)器的主動模式或者被動模式下,使用本發(fā)明的原理都是一樣的,因此,此處僅以被動模式為例,對本發(fā)明的實施方式進行詳細描述:
[0026]1、FTP客戶端運用本發(fā)明進行FTP文件上傳的實施過程詳細描述如下:
[0027](I)預(yù)處理工作:首先,F(xiàn)TP客戶端獲取用戶設(shè)置的上傳線程數(shù)N和要上傳文件的信息及文件傳輸格式;接著,根據(jù)文件大小和線程數(shù)N,將原文件合理地分割成M塊,確保M大于等于N ;FTP客戶端建立對應(yīng)的臨時配置文件;
[0028](2)FTP客戶端開啟N個線程,分別創(chuàng)建本地套接字,應(yīng)用TCP/IP協(xié)議與目標(biāo)服務(wù)器建立N個控制連接;
[0029](3) FTP客戶端的N個線程分別發(fā)送USER xxx \r\n和PASS yyy \r\n命令將用戶名(XXX)和密碼(yyy)發(fā)送到FTP服務(wù)器,登錄FTP服務(wù)器;
[0030](4)成功登陸后,F(xiàn)TP客戶端的N個線程分別使用TYPE命令設(shè)置統(tǒng)一的數(shù)據(jù)傳輸格式,例如:傳輸格式為二進制格式時,發(fā)送給FTP服務(wù)器的具體命令為TYPE I \r\n ;
[0031](5)FTP客戶端N個線程分別發(fā)送PASV \r\n命令,從回復(fù)信息中獲得FTP服務(wù)器的IP地址和臨時開放的用于建立數(shù)據(jù)連接的端口號,用于N個線程建立N個數(shù)據(jù)連接;
[0032](6) FTP客戶端發(fā)送STOR xxx \r\n命令,向FTP服務(wù)器要要發(fā)起文件上傳過程,XXX是要在服務(wù)器上創(chuàng)建的文件名;
[0033](7) FTP客戶端為每個線程分配一個文件塊的傳輸任務(wù),N個線程與FTP服務(wù)器端分別建立數(shù)據(jù)連接,開始上傳數(shù)據(jù)。如果一個線程完成了分配文件塊的傳輸任務(wù),則重新分配一個新的文件塊給該線程,直到所有的文件塊都上傳完成;
[0034](S)FTP客戶端專門開啟一個線程用來建立和管理臨時配置文件,實時記錄斷點上傳時需要的文件信息;
[0035](9)當(dāng)所有文件塊都上傳完畢后,F(xiàn)TP服務(wù)器端根據(jù)每個文件塊的順序信息將文件塊重新組合成原文件形式;
[0036](10)關(guān)閉所有的數(shù)據(jù)連接,然后關(guān)閉的控制連接,
[0037](Il)FTP客戶端刪除臨時配置文件,至此一次文件上傳過程結(jié)束。
[0038]以上FTP客戶端文件多線程上傳實現(xiàn)流程圖參見圖2。
[0039]2、如果在采用本發(fā)明進行文件上傳時發(fā)生意外中斷,則按照如下方式實現(xiàn)文件的斷點上傳:
[0040](I)預(yù)處理工作:FTP客戶端獲取用戶設(shè)置的斷點上傳的線程數(shù)N’(注:此處的N’可以與初次上傳時設(shè)置的N值不同),并從在FTP客戶端讀取對應(yīng)的臨時配置文件;
[0041](2) FTP客戶端開啟N’個線程,分別創(chuàng)建本地套接字,應(yīng)用TCP/IP協(xié)議與目標(biāo)服務(wù)器建立N’個控制連接;
[0042](3)FTP客戶端的N’個線程分別發(fā)送USER xxx \r\n和PASS yyy \r\n命令將用戶名(XXX)和密碼(yyy)發(fā)送到FTP服務(wù)器,登錄FTP服務(wù)器;
[0043](4)成功登陸后,F(xiàn)TP客戶端的N’個線程分別使用TYPE命令設(shè)置數(shù)據(jù)傳輸格式為該文件的原傳輸格式,例如:如原傳輸格式為二進制格式時,發(fā)送給FTP服務(wù)器的具體命令為 TYPE I \r\n ;[0044](5)FTP客戶端N’個線程分別發(fā)送PASV \r\n命令,從回復(fù)信息中獲得FTP服務(wù)器的IP地址和臨時開放的用于建立數(shù)據(jù)連接的端口號,用于N’個線程建立N’個數(shù)據(jù)連接;
[0045](6) FTP客戶端N’個線程分別發(fā)送APPE xxx \r\n命令,向FTP服務(wù)器發(fā)起文件追加上傳過程,XXX是要斷點上傳文件在FTP服務(wù)器上的文件名;
[0046](7) FTP客戶端根據(jù)從配置文件中獲取的信息,計算出每個文件塊的斷點位置,并設(shè)置從每個斷點處開始傳送;然后,為每個線程分配一個文件塊的傳輸任務(wù),N’個線程與FTP服務(wù)器端分別建立數(shù)據(jù)連接,開始上傳數(shù)據(jù)。如果一個線程完成了分配文件塊的傳輸任務(wù),則重新分配一個新的文件塊給該線程,直到所有的文件塊都上傳完成;
[0047](S)FTP客戶端專門開啟一個線程用來管理臨時配置文件,實時記錄斷點上傳時需要的文件信息;
[0048](9)如果續(xù)傳過程再次發(fā)生意外中斷,則跳到(1),重新順序執(zhí)行(I) - (8);如果沒有再次中斷,則順序執(zhí)行以下步驟;
[0049](10)當(dāng)所有文件塊都上傳完畢后,F(xiàn)TP服務(wù)器端根據(jù)每個文件塊的順序信息將文件塊重新組合成原文件形式;
[0050](11)關(guān)閉所有的數(shù)據(jù)連接,然后關(guān)閉的控制連接;
[0051](12) FTP客戶端刪除臨時配置文件,至此文件斷點上傳過程結(jié)束。
[0052]以上FTP客戶端文件多線程斷點上傳實現(xiàn)流程圖參見圖3。
[0053]上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述實施例的限制,其他的任何未背離本發(fā)明的精神實質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法,其特征在于,包括下述步驟: 51、在不修改原始FTP協(xié)議的情況下,F(xiàn)TP客戶端建立多線程連接,實現(xiàn)文件的多線程上傳; 52、多線程上傳操作中,F(xiàn)TP客戶端通過多線程方式與FTP服務(wù)器端建立多個連接,連接包括數(shù)據(jù)連接和控制連接,根據(jù)上傳文件的大小和線程數(shù),將文件劃分成多個塊,分配給不同的線程上傳,當(dāng)某個線程上傳完一個文件塊后,再分配一個新的文件塊給該線程,保證了所有線程都處于活躍狀態(tài); 53、斷點上傳操作中,首先從臨時配置文件中讀取斷點信息,用于設(shè)置續(xù)傳時各文件塊的開始位置,然后采取步驟S2的方法,利用多線程并發(fā)上傳每個文件塊尚未上傳的部分; 54、在步驟S2和步驟S3的上傳操作中,F(xiàn)TP客戶端另外建立一個線程,專門用于實時記錄臨時配置文件信息,確保發(fā)生意外中斷時,啟動斷點上傳操作能保證從正確的文件位置開始。
2.根據(jù)權(quán)利要求1所述的基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法,其特征在于,步驟S2中,還包括在客戶端建立對應(yīng)的臨時配置文件,用來實時記錄斷點上傳時需要的文件信息;當(dāng)文件的所有的塊都傳輸完畢,即文件成功上傳到FTP服務(wù)器后,自動刪除客戶端的臨時配置文件。
3.根據(jù)權(quán)利要求1所述的基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法,其特征在于,步驟S2中,文件的合理劃分方法是:分塊的大小是設(shè)置的數(shù)據(jù)緩沖區(qū)的整數(shù)倍,最小為I倍;分塊的大小不小于實際建立連接的線程數(shù),每個線程都能分配到上傳任務(wù)。
4.根據(jù)權(quán)利要求1所述的基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法,其特征在于,斷點上傳過程仍然可以使用多線程,而且可以設(shè)置與初次上傳時不同的線程數(shù)目。
5.根據(jù)權(quán)利要求1所述的基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法,其特征在于,臨時配置文件包含的信息有:文件在FTP服務(wù)器端存放的完整路徑、文件的大小、文件分成的塊數(shù)、塊的大小、每塊開始位置的偏移量、每塊已上傳的大小、每塊是否已經(jīng)上傳完畢以及傳輸格式。
6.根據(jù)權(quán)利要求1所述的基于FTP協(xié)議實現(xiàn)超大文件多線程斷點上傳的方法,其特征在于,步驟S2和步驟S3所指的上傳操作成功完成后,客戶端必須自動刪除臨時配置文件,節(jié)省磁盤空間。
【文檔編號】H04L29/08GK103442037SQ201310347968
【公開日】2013年12月11日 申請日期:2013年8月9日 優(yōu)先權(quán)日:2013年8月9日
【發(fā)明者】吳一民 申請人:華南理工大學(xué)