本發(fā)明涉及網絡技術,具體地說是一種基于FTP文件高效傳輸?shù)姆椒ā?/p>
背景技術:
FTP是一種廣泛使用的網絡服務,它是數(shù)據(jù)傳輸?shù)闹匾ㄐ欧绞?,大多?shù)文件上傳和下載都是靠FTP完成的,它實現(xiàn)了可靠且有效的傳輸數(shù)據(jù)的功能;同時,只要進行文件傳輸?shù)南到y(tǒng)都支持FTP協(xié)議,就可以在不同類型的計算機上進行文件傳輸,使文件傳輸不會因各主機文件、存儲、系統(tǒng)的差異而影響。因此,F(xiàn)TP一直是Internet上廣泛使用的服務。
傳統(tǒng)的FTP采用單線程上傳文件,在網絡寬帶有限的條件下,對帶寬的搶占優(yōu)勢小,導致上傳速度慢;同時,一旦發(fā)生意外中斷,就需要重新上傳文件的全部數(shù)據(jù),極大的影響數(shù)據(jù)上傳的效率。
技術實現(xiàn)要素:
本發(fā)明的技術任務是提供一種基于FTP文件高效傳輸?shù)姆椒ǎ瑏斫鉀QFTP采用單線程上傳文件,造成上傳速度慢以及中斷后只能重新上傳,造成上傳效率低的問題。
本發(fā)明的技術任務是按以下方式實現(xiàn)的,一種基于FTP文件高效傳輸?shù)姆椒?,其特征在于:該方法包括如下步驟:
(1)、查看是否存在指定文件對應的臨時配置文件:
①、如果不存在,則執(zhí)行步驟(2);
②、如果存在,則跳轉執(zhí)行步驟(3);
(2)、首先,獲取用戶設置的上傳線程數(shù)目N、待上傳文件在服務器端的路徑、文件上傳的進度和文件傳輸格式(默認為二進制格式);然后,根據(jù)線程數(shù)目N,將原文件分割成N塊(邏輯分割,只獲得每個塊開始和結束位置的偏移量);專門開啟一個線程,用來建立和管理對應的臨時配置文件,將每個線程完成任務情況實時記錄到臨時配置文件中(默認為:每隔六秒記錄一次),方便斷點續(xù)傳時使用,跳轉執(zhí)行步驟(4);
(3)、首先,讀取臨時配置文件,獲取之前的數(shù)據(jù)傳輸格式、上傳線程數(shù)目N和各個線程的上傳進度,為每個線程重新分配任務,接著之前的斷點位置上傳;專門開啟一個線程,用來管理對應的臨時配置文件,將每個線程完成任務情況實時記錄到臨時配置文件中(默認為:每隔六秒記錄一次),方便斷點續(xù)傳時使用;
(4)、開啟N個線程,分別創(chuàng)建本地套接字,應用TCP/IP協(xié)議與目標服務器建立N個控制連接;
(5)、N個線程分別發(fā)送USER xxx \r\n和PASSyyy \r\n命令將用戶名(xxx)和密碼(yyy)發(fā)送到FTP服務器,登錄FTP服務器;
(6)、成功登錄后,N個線程分別使用TYPE命令設置統(tǒng)一的數(shù)據(jù)傳輸格式;
(7)、N個線程分別發(fā)送PASV \r\n命令,該命令的回應包含服務器正監(jiān)聽的主機地址端口地址,客戶端從回復信息中獲得FTP服務器的IP地址和臨時開放的用于建立數(shù)據(jù)連接的端口號,用于N個線程與FTP服務器建立N個數(shù)據(jù)連接;
(8)、N個線程分別發(fā)送RSET xxx \r\n命令,設置文件傳輸?shù)钠鹗计屏浚渲?,xxx是起始偏移量的數(shù)值,每個線程的偏移量不同;
(9)、N個線程分別發(fā)送APPE xxx \r\n命令,向FTP服務器發(fā)起文件上傳請求,其中,xxx是要在服務器上創(chuàng)建的文件名,N個線程使用相同的文件名;
(10)、N個線程與FTP服務器分別建立數(shù)據(jù)連接,每個線程分配一個文件塊,開始并行上傳各個文件塊數(shù)據(jù);
(11)、主線程每隔十秒鐘查詢一次各個線程的任務完成情況,當有線程分配的傳輸任務完成后,利用RDT算法,為剩余任務量最多的線程分擔部分傳輸任務;
(12)、如果再次出現(xiàn)意外中斷,則重復進行步驟(1)到步驟(11);至到所有文件塊都上傳完畢,則關閉所有的數(shù)據(jù)連接和控制連接;
(13)、刪除臨時配置文件,一次文件上傳過程結束。
作為優(yōu)選,所述步驟(1)中若存在指定文件對應的臨時配置文件,則說明該文件將要進行斷點續(xù)傳。
作為優(yōu)選,所述步驟(2)中文件傳輸格式默認為二進制格式。
作為優(yōu)選,所述步驟(2)中源文件分割采用邏輯分割,只獲得每個塊開始和結束為止的偏移量。
作為優(yōu)選,所述步驟(6)中數(shù)據(jù)傳輸格式為二進制格式時,發(fā)送個FTP服務器的命令為TYPE I \r\n。
作為優(yōu)選,所述FTP服務器支持文件的斷點續(xù)傳。
本發(fā)明的基于FTP文件高效傳輸?shù)姆椒ň哂幸韵聝?yōu)點:本發(fā)明通過多線程技術、斷點續(xù)傳技術等,有效解決傳統(tǒng)FTP上傳操作中存在上傳速度慢以及文件傳輸效率低的問題。
故本發(fā)明具有設計合理、使用方便、一物多用等特點,因而,具有很好的推廣使用價值。
附圖說明
下面結合附圖對本發(fā)明進一步說明。
附圖1為基于FTP文件高效傳輸?shù)姆椒ǖ牧鞒炭驁D。
具體實施方式
參照說明書附圖和具體實施例對本發(fā)明的基于FTP文件高效傳輸?shù)姆椒ㄗ饕韵略敿毜卣f明。
實施例:
如附圖1所示,本發(fā)明的基于FTP文件高效傳輸?shù)姆椒?,該方法包括如下步驟:
(1)、查看是否存在指定文件對應的臨時配置文件:
①、如果不存在,則執(zhí)行步驟(2);
②、如果存在(說明將要進行的斷點續(xù)傳),則跳轉執(zhí)行步驟(3);
(2)、首先,獲取用戶設置的上傳線程數(shù)目N、待上傳文件在服務器端的路徑、文件上傳的進度和文件傳輸格式(默認為二進制格式);然后,根據(jù)線程數(shù)目N,將原文件分割成N塊(邏輯分割,只獲得每個塊開始和結束位置的偏移量);專門開啟一個線程,用來建立和管理對應的臨時配置文件,將每個線程完成任務情況實時記錄到臨時配置文件中(默認為:每隔六秒記錄一次),方便斷點續(xù)傳時使用,跳轉執(zhí)行步驟(4);
(3)、首先,讀取臨時配置文件,獲取之前的數(shù)據(jù)傳輸格式、上傳線程數(shù)目N和各個線程的上傳進度,為每個線程重新分配任務,接著之前的斷點位置上傳;專門開啟一個線程,用來管理對應的臨時配置文件,將每個線程完成任務情況實時記錄到臨時配置文件中(默認為:每隔六秒記錄一次),方便斷點續(xù)傳時使用;
(4)、開啟N個線程,分別創(chuàng)建本地套接字,應用TCP/IP協(xié)議與目標服務器建立N個控制連接;
(5)、N個線程分別發(fā)送USER xxx \r\n和PASSyyy \r\n命令將用戶名(xxx)和密碼(yyy)發(fā)送到FTP服務器,登錄FTP服務器;
(6)、成功登錄后,N個線程分別使用TYPE命令設置統(tǒng)一的數(shù)據(jù)傳輸格式,例如:數(shù)據(jù)傳輸格式為二進制格式時,發(fā)送個FTP服務器的命令為TYPE I \r\n;
(7)、N個線程分別發(fā)送PASV \r\n命令,該命令的回應包含服務器正監(jiān)聽的主機地址端口地址,客戶端從回復信息中獲得FTP服務器的IP地址和臨時開放的用于建立數(shù)據(jù)連接的端口號,用于N個線程與FTP服務器建立N個數(shù)據(jù)連接;
(8)、N個線程分別發(fā)送RSET xxx \r\n命令,設置文件傳輸?shù)钠鹗计屏?,其中,xxx是起始偏移量的數(shù)值,每個線程的偏移量不同;
(9)、N個線程分別發(fā)送APPE xxx \r\n命令,向FTP服務器發(fā)起文件上傳請求,其中,xxx是要在服務器上創(chuàng)建的文件名,N個線程使用相同的文件名(FTP服務器支持文件的斷點續(xù)傳);
(10)、N個線程與FTP服務器分別建立數(shù)據(jù)連接,每個線程分配一個文件塊,開始并行上傳各個文件塊數(shù)據(jù);
(11)、主線程每隔十秒鐘查詢一次各個線程的任務完成情況,當有線程分配的傳輸任務完成后,利用RDT算法,為剩余任務量最多的線程分擔部分傳輸任務;
(12)、如果再次出現(xiàn)意外中斷,則重復進行步驟(1)到步驟(11);至到所有文件塊都上傳完畢,則關閉所有的數(shù)據(jù)連接和控制連接;
(13)、刪除臨時配置文件,一次文件上傳過程結束。
通過上面具體實施方式,所述技術領域的技術人員可容易的實現(xiàn)本發(fā)明。但是應當理解,本發(fā)明并不限于上述的種具體實施方式。在公開的實施方式的基礎上,所述技術領域的技術人員可任意組合不同的技術特征,從而實現(xiàn)不同的技術方案。例如將實施例2至實施例6,任意的兩兩結合或任意三種結合或任意四種結合或五種全部結合的方式,從而形成各種其它的技術方案。
除說明書所述的技術特征外,均為本專業(yè)技術人員的已知技術。