專(zhuān)利名稱:一種簡(jiǎn)單可靠的遠(yuǎn)程文件傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種文件傳輸方法,尤其是一種用于hternet文件傳輸?shù)暮?jiǎn)單可靠的遠(yuǎn)程文件傳輸方法。
背景技術(shù):
網(wǎng)絡(luò)文件傳輸?shù)膮f(xié)議有多種,其中最常見(jiàn)的是FTP和TFTP。FTP協(xié)議(File Transfer Protocol)即遠(yuǎn)程文件傳輸協(xié)議,是一個(gè)用于簡(jiǎn)化IP網(wǎng)絡(luò)上系統(tǒng)之間文件傳送的協(xié)議。采用FTP協(xié)議可使hternet用戶高效地從網(wǎng)上的FTP服務(wù)器傳輸大信息量的數(shù)據(jù)文件,將遠(yuǎn)程主機(jī)上的文件拷貝到自己的計(jì)算機(jī)上,以達(dá)到資源共享和傳遞信息的目的。 TFTP (Trivial File Transfer Protocol,簡(jiǎn)單文件傳輸協(xié)議)是TCP/IP協(xié)議族中的一個(gè)用來(lái)在客戶機(jī)與服務(wù)器之間進(jìn)行簡(jiǎn)單文件傳輸?shù)膮f(xié)議,提供不復(fù)雜、開(kāi)銷(xiāo)不大的文件傳輸服務(wù)。它基于UDP協(xié)議而實(shí)現(xiàn),它不具備通常的FTP的全部功能,它只能從文件服務(wù)器上獲得或?qū)懭胛募?,不能列出目錄,不進(jìn)行認(rèn)證等。FTP是hternet文件傳輸?shù)幕A(chǔ),它由一系列規(guī)格說(shuō)明文件組成,用于將資料從網(wǎng)絡(luò)上的一臺(tái)計(jì)算機(jī)傳輸?shù)酵痪W(wǎng)絡(luò)上的另一臺(tái)計(jì)算機(jī)。同大多數(shù)hternet服務(wù)一樣, FTP也是一個(gè)客戶/服務(wù)器系統(tǒng);用戶通過(guò)一個(gè)客戶機(jī)程序FTP,連接至在遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的服務(wù)器程序。FTP傳輸文件的步驟為1)客戶端和服務(wù)端的21端口建立鏈接,發(fā)送用戶名和密碼,服務(wù)端驗(yàn)證通過(guò)后FTP鏈接建立;幻客戶端發(fā)送LIST命令獲取下載目錄下的文件列表;幻客戶端從文件列表中選取一個(gè)文件,獲得文件大小,通過(guò)RETR命令獲取文件; 當(dāng)傳輸文件時(shí),服務(wù)器和客戶端建立一條TCP數(shù)據(jù)鏈路,文件傳送完畢后,就關(guān)閉該TCP鏈路;4)循環(huán)執(zhí)行步驟3,直到文件傳送完畢。從上面的FTP步驟秘書(shū)可以看出,編碼實(shí)現(xiàn)FTP 操作是相當(dāng)復(fù)雜的,所以很多不復(fù)雜、開(kāi)銷(xiāo)不大的文件傳輸服務(wù)都是用TFTP。TFTP傳輸文件的步驟為1)客戶端向服務(wù)器發(fā)送讀取文件的請(qǐng)求,如果服務(wù)器批準(zhǔn)此請(qǐng)求,則服務(wù)器打開(kāi)連接;幻服務(wù)器向客戶端發(fā)送定長(zhǎng)為512字節(jié)的數(shù)據(jù)包,客戶端收到數(shù)據(jù)包后對(duì)這個(gè)數(shù)據(jù)包發(fā)送ACK確認(rèn)包,服務(wù)器發(fā)出下一個(gè)數(shù)據(jù)包以前必須得到客戶對(duì)上一個(gè)數(shù)據(jù)包的確認(rèn);幻重復(fù)步驟2,直到客戶端收到一個(gè)小于512字節(jié)的數(shù)據(jù)包,然后關(guān)閉連接。當(dāng)用TFTP進(jìn)行文件傳輸時(shí),由于TFTP使用的是不可靠的UDP,所以TFTP必須處理分組丟失和分組重復(fù),分組丟失可通過(guò)發(fā)送方的超時(shí)與重傳機(jī)制解決。由于TFTP的雙方都是發(fā)送者和接收者,所以目前的技術(shù)方案采用的是雙方超時(shí)重傳的機(jī)制。采用FTP協(xié)議在FTP客戶端和FTP服務(wù)器端進(jìn)行文件的傳輸,由于操作方便,目前應(yīng)用比較廣泛,但是,采用FTP協(xié)議傳輸文件時(shí),通常在得到FTP協(xié)議的用戶和密碼后即可對(duì)傳輸?shù)奈募M(jìn)行編輯、修改等操作,安全性比較低,并且編碼實(shí)現(xiàn)FTP操作比較復(fù)雜,網(wǎng)絡(luò)故障很容易導(dǎo)致鏈接異常,從而影響應(yīng)用程序的穩(wěn)定性。當(dāng)用TFTP進(jìn)行文件傳輸時(shí),由于TFTP使用的是不可靠的UDP,所以TFTP必須處理分組丟失和分組重復(fù),分組丟失可通過(guò)發(fā)送方的超時(shí)與重傳機(jī)制解決。TFTP是通過(guò)發(fā)送方的超時(shí)與重傳機(jī)制解決分組丟失的,由于TFTP的雙方都既是發(fā)送者又是接收者,如果雙方都超時(shí)與重傳,就可能會(huì)導(dǎo)致“持續(xù)重傳問(wèn)題”。TFTP服務(wù)器發(fā)送完數(shù)據(jù)包DATA [η]之后就開(kāi)始在設(shè)定的時(shí)間Tl內(nèi)等待TFTP客戶端的確認(rèn)包,TFTP客戶端收到數(shù)據(jù)包后,發(fā)送了 ACK[n]確認(rèn)包,之后就開(kāi)始在設(shè)定的時(shí)間 Tl內(nèi)等待下一個(gè)數(shù)據(jù)包DATA[n+l],但是這個(gè)ACK包在傳輸?shù)倪^(guò)程中丟失了,于是設(shè)定的Tl 時(shí)間一到,TFTP服務(wù)器沒(méi)有收到確認(rèn)包,TFTP客戶端也沒(méi)有收到下一個(gè)數(shù)據(jù)包DATA[n+l], 服務(wù)器不知道是自己發(fā)送的數(shù)據(jù)包丟失還是客戶端發(fā)送的ACK丟失。所以,TFTP服務(wù)器重發(fā)了數(shù)據(jù)包DATA[n],而客戶端也不知道是DATA[n+l]丟失還是ACK[n]丟失,于是重傳了 ACK[η]。這個(gè)時(shí)候問(wèn)題就來(lái)了,客戶端重發(fā)了 ACK[n]后,就再一次收到了 DATA[n](當(dāng)然這個(gè)包直接丟棄,不再保存),然后發(fā)送這個(gè)包的確認(rèn)包ACK [η]。服務(wù)器在重發(fā)了 DATA [η]后, 先是收到了客戶端重發(fā)的ACK[n],然后發(fā)送數(shù)據(jù)包DATA[n+l],接著又收到了客戶端剛發(fā)的ACK[n],于是又發(fā)了數(shù)據(jù)包DATA[n+l]。如此重復(fù)下去,直到傳送完所有數(shù)據(jù)。這里TFTP 服務(wù)器端每個(gè)數(shù)據(jù)包都要發(fā)送兩次,TFTP客戶端的每個(gè)確認(rèn)包也要發(fā)送兩次。不但會(huì)造成傳輸效率低,而且傳輸?shù)臅r(shí)間也會(huì)大大延長(zhǎng)。
發(fā)明內(nèi)容
本發(fā)明是為避免上述已有技術(shù)中存在的不足之處,提供一種簡(jiǎn)單可靠的遠(yuǎn)程文件傳輸方法,以提高遠(yuǎn)程文件的傳輸效率、提高傳輸可靠性并簡(jiǎn)化傳輸過(guò)程。本發(fā)明提供了一種簡(jiǎn)單可靠的遠(yuǎn)程文件傳輸方法。一種簡(jiǎn)單可靠的遠(yuǎn)程文件傳輸方法,包括以下步驟a.用戶啟動(dòng)遠(yuǎn)程文件傳輸程序,進(jìn)行遠(yuǎn)程文件傳輸程序的初始化;然后進(jìn)入超時(shí)次數(shù)判斷步驟客戶端應(yīng)用程序判斷是否超時(shí)次數(shù)X > N(N為自然數(shù)且N > 2),若超時(shí)次數(shù)X < N則轉(zhuǎn)入步驟b,若超時(shí)次數(shù)X > N則重新啟動(dòng)遠(yuǎn)程文件傳輸程序;b.客戶端應(yīng)用程序把用于請(qǐng)求遠(yuǎn)程文件傳輸?shù)恼?qǐng)求數(shù)據(jù)包發(fā)給TFTP服務(wù)器;c. TFTP服務(wù)器接收客戶端發(fā)送的請(qǐng)求數(shù)據(jù)包,并根據(jù)請(qǐng)求數(shù)據(jù)包向客戶端發(fā)送文件數(shù)據(jù)包;d.客戶端接收TFTP服務(wù)器發(fā)送的文件數(shù)據(jù)包,并由客戶端應(yīng)用程序?qū)λ邮盏奈募?shù)據(jù)包進(jìn)行判斷,判斷該文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包;如果該文件數(shù)據(jù)包不是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟e ;如果該文件數(shù)據(jù)包是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟f ;e.由客戶端應(yīng)用程序判斷該文件數(shù)據(jù)包是不是重復(fù)的文件數(shù)據(jù)包,如果是重復(fù)的文件數(shù)據(jù)包,則丟棄該文件數(shù)據(jù)包,客戶端應(yīng)用程序向TFTP服務(wù)器發(fā)送一個(gè)ACK確認(rèn)包,跳轉(zhuǎn)回步驟d ;如果不是重復(fù)的文件數(shù)據(jù)包,則保存該文件數(shù)據(jù)包,客戶端應(yīng)用程序向TFTP服務(wù)器發(fā)送一個(gè)ACK確認(rèn)包,跳轉(zhuǎn)回步驟d ;f.客戶端應(yīng)用程序向TFTP服務(wù)器發(fā)送一個(gè)ACK確認(rèn)包,然后結(jié)束文件傳輸工作。本發(fā)明的簡(jiǎn)單可靠的遠(yuǎn)程文件傳輸方法的特點(diǎn)也在于在所述步驟d中,客戶端應(yīng)用程序在接收TFTP服務(wù)器發(fā)送的文件數(shù)據(jù)包時(shí),判斷客戶端應(yīng)用程序從發(fā)出請(qǐng)求數(shù)據(jù)包的時(shí)刻起,是否在預(yù)設(shè)時(shí)間Tl內(nèi)接收到TFTP服務(wù)器發(fā)送的第一個(gè)文件數(shù)據(jù)包,若客戶端應(yīng)用程序未在預(yù)設(shè)時(shí)間Tl內(nèi)接收到第一個(gè)文件數(shù)據(jù)包, 則將超時(shí)次數(shù)X加1后返回所述步驟a的超時(shí)次數(shù)判斷步驟;若客戶端應(yīng)用程序在預(yù)設(shè)
4時(shí)間Tl內(nèi)接收到第一個(gè)文件數(shù)據(jù)包,則客戶端應(yīng)用程序向TFTP服務(wù)器發(fā)送一個(gè)ACK確認(rèn)包;在所述步驟d中,客戶端接收TFTP服務(wù)器發(fā)送的第K個(gè)文件數(shù)據(jù)包時(shí)(K為自然數(shù)且 K ^ 2),判斷客戶端應(yīng)用程序從開(kāi)始接收第K個(gè)文件數(shù)據(jù)包的時(shí)刻起,是否在預(yù)設(shè)時(shí)間T2 內(nèi)接收到第K個(gè)文件數(shù)據(jù)包,若客戶端應(yīng)用程序未在預(yù)設(shè)時(shí)間T2內(nèi)接收到第K個(gè)文件數(shù)據(jù)包,則返回步驟a ;若客戶端應(yīng)用程序在預(yù)設(shè)時(shí)間T2內(nèi)接收到第K個(gè)文件數(shù)據(jù)包,判斷第K 個(gè)文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包;如果第K個(gè)文件數(shù)據(jù)包不是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟e ;如果第K個(gè)文件數(shù)據(jù)包是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟f。在所述步驟d中,客戶端應(yīng)用程序判斷文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包的方法是若文件數(shù)據(jù)包的長(zhǎng)度小于512字節(jié),則判定該文件數(shù)據(jù)包為最后一個(gè)文件數(shù)據(jù)包。在所述步驟e中,客戶端應(yīng)用程序判斷文件數(shù)據(jù)包是不是重復(fù)的文件數(shù)據(jù)包的方法是獲取該文件數(shù)據(jù)包的編號(hào),并將該文件數(shù)據(jù)包的編號(hào)與上一個(gè)文件數(shù)據(jù)包的編號(hào)相比較,如果該文件數(shù)據(jù)包的編號(hào)不大于上一個(gè)文件數(shù)據(jù)包的編號(hào),則認(rèn)定該文件數(shù)據(jù)包為重復(fù)的文件數(shù)據(jù)包。與已有技術(shù)相比,本發(fā)明有益效果體現(xiàn)在通過(guò)超時(shí)次數(shù)判斷步驟和操作成功后回復(fù)ACK,使得無(wú)論服務(wù)器發(fā)送的數(shù)據(jù)包丟失還是客戶端發(fā)送的數(shù)據(jù)包(ACK)丟失,都由服務(wù)器超時(shí)重傳數(shù)據(jù)包,提高了數(shù)據(jù)傳輸?shù)目煽啃?。在客戶端與服務(wù)器建立連接之后,從開(kāi)始接收數(shù)據(jù)時(shí)起,如果在設(shè)定的時(shí)間T2內(nèi)沒(méi)有完成文件數(shù)據(jù)包的接收,即重新啟動(dòng)文件傳輸程序,避免超時(shí)等待,保證數(shù)據(jù)傳輸?shù)目煽啃院蛡鬏斝?。本發(fā)明的遠(yuǎn)程文件傳輸方法,具有實(shí)現(xiàn)簡(jiǎn)單、數(shù)據(jù)傳輸可靠性和傳輸效率高等優(yōu)點(diǎn)。
圖1為本發(fā)明的遠(yuǎn)程文件傳輸方法的流程圖。圖2為本發(fā)明的遠(yuǎn)程文件傳輸方法的系統(tǒng)結(jié)構(gòu)簡(jiǎn)圖。圖1和圖2中標(biāo)號(hào)201 TFTP服務(wù)器,202客戶端。以下通過(guò)具體實(shí)施方式
,并結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
具體實(shí)施例方式參見(jiàn)圖1 圖2,一種簡(jiǎn)單可靠的遠(yuǎn)程文件傳輸方法,包括以下步驟a.用戶啟動(dòng)遠(yuǎn)程文件傳輸程序(S301),進(jìn)行遠(yuǎn)程文件傳輸程序的初始化;然后進(jìn)入超時(shí)次數(shù)判斷步驟客戶端應(yīng)用程序判斷是否超時(shí)次數(shù)X 為自然數(shù)且N >2) S302, 若超時(shí)次數(shù)X < N則轉(zhuǎn)入步驟b,若超時(shí)次數(shù)X > N則重新啟動(dòng)遠(yuǎn)程文件傳輸程序;b.客戶端應(yīng)用程序把用于請(qǐng)求遠(yuǎn)程文件傳輸?shù)恼?qǐng)求數(shù)據(jù)包發(fā)給TFTP服務(wù)器 S303 ;c. TFTP服務(wù)器201接收客戶端202發(fā)送的請(qǐng)求數(shù)據(jù)包,并根據(jù)請(qǐng)求數(shù)據(jù)包向客戶端202發(fā)送文件數(shù)據(jù)包;d.客戶端202接收TFTP服務(wù)器201發(fā)送的文件數(shù)據(jù)包,并由客戶端應(yīng)用程序?qū)λ邮盏奈募?shù)據(jù)包進(jìn)行判斷,判斷該文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包S307 ;如果該文件數(shù)據(jù)包不是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟e ;如果該文件數(shù)據(jù)包是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟f;e.由客戶端應(yīng)用程序判斷該文件數(shù)據(jù)包是不是重復(fù)的文件數(shù)據(jù)包S308,如果是重復(fù)的文件數(shù)據(jù)包,則丟棄該文件數(shù)據(jù)包S309,客戶端應(yīng)用程序向TFTP服務(wù)器201發(fā)送一個(gè)ACK確認(rèn)包S311,跳轉(zhuǎn)回步驟d ;如果不是重復(fù)的文件數(shù)據(jù)包,則保存該文件數(shù)據(jù)包 S310,客戶端應(yīng)用程序向TFTP服務(wù)器201發(fā)送一個(gè)ACK確認(rèn)包,跳轉(zhuǎn)回步驟d ;f.客戶端應(yīng)用程序向TFTP服務(wù)器201發(fā)送一個(gè)ACK確認(rèn)包S312,然后結(jié)束文件傳輸工作。在所述步驟d中,客戶端應(yīng)用程序在接收TFTP服務(wù)器201發(fā)送的文件數(shù)據(jù)包時(shí), 判斷客戶端應(yīng)用程序從發(fā)出請(qǐng)求數(shù)據(jù)包的時(shí)刻起,是否在預(yù)設(shè)時(shí)間Tl內(nèi)接收到TFTP服務(wù)器201發(fā)送的第一個(gè)文件數(shù)據(jù)包S304,若客戶端應(yīng)用程序未在預(yù)設(shè)時(shí)間Tl內(nèi)接收到第一個(gè)文件數(shù)據(jù)包,則將超時(shí)次數(shù)X加1后返回所述步驟a的超時(shí)次數(shù)判斷步驟;若客戶端應(yīng)用程序在預(yù)設(shè)時(shí)間Tl內(nèi)接收到第一個(gè)文件數(shù)據(jù)包,則客戶端應(yīng)用程序向TFTP服務(wù)器201發(fā)送一個(gè)ACK確認(rèn)包S305。通過(guò)預(yù)設(shè)時(shí)間Tl來(lái)避免接收文件超時(shí),如果由于網(wǎng)絡(luò)故障使得接收失敗,就通過(guò)超時(shí)次數(shù)判斷,從而可以再次進(jìn)行網(wǎng)絡(luò)連接,從而提高傳輸效率,避免等待時(shí)間過(guò)長(zhǎng)。在所述步驟d中,客戶端接收TFTP服務(wù)器201發(fā)送的第K個(gè)文件數(shù)據(jù)包時(shí)(K為自然數(shù)且K ,判斷客戶端應(yīng)用程序從開(kāi)始接收第K個(gè)文件數(shù)據(jù)包的時(shí)刻起,是否在預(yù)設(shè)時(shí)間T2內(nèi)接收到第K個(gè)文件數(shù)據(jù)包S306,若客戶端應(yīng)用程序未在預(yù)設(shè)時(shí)間T2內(nèi)接收到第 K個(gè)文件數(shù)據(jù)包,則返回步驟a ;若客戶端應(yīng)用程序在預(yù)設(shè)時(shí)間T2內(nèi)接收到第K個(gè)文件數(shù)據(jù)包,判斷第K個(gè)文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包S307 ;如果第K個(gè)文件數(shù)據(jù)包不是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟e ;如果第K個(gè)文件數(shù)據(jù)包是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟f。通過(guò)預(yù)設(shè)時(shí)間T2來(lái)避免接收第一個(gè)數(shù)據(jù)包以外的數(shù)據(jù)包超時(shí),如果由于網(wǎng)絡(luò)故障使得接收失敗,就直接返回,再次進(jìn)行網(wǎng)絡(luò)連接,從而提高傳輸效率。在所述步驟d中,客戶端應(yīng)用程序判斷文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包 S307的方法是若文件數(shù)據(jù)包的長(zhǎng)度小于512字節(jié),則判定該文件數(shù)據(jù)包為最后一個(gè)文件數(shù)據(jù)包。若文件數(shù)據(jù)包的長(zhǎng)度不小于512字節(jié),則判定該文件數(shù)據(jù)包不是最后一個(gè)文件數(shù)據(jù)包,轉(zhuǎn)入步驟e。在所述步驟e中,客戶端應(yīng)用程序判斷文件數(shù)據(jù)包是不是重復(fù)的文件數(shù)據(jù)包S308 的方法是獲取該文件數(shù)據(jù)包的編號(hào),并將該文件數(shù)據(jù)包的編號(hào)與上一個(gè)文件數(shù)據(jù)包的編號(hào)相比較,如果該文件數(shù)據(jù)包的編號(hào)不大于上一個(gè)文件數(shù)據(jù)包的編號(hào),則認(rèn)定該文件數(shù)據(jù)包為重復(fù)的文件數(shù)據(jù)包。該文件數(shù)據(jù)包的編號(hào)大于上一個(gè)文件數(shù)據(jù)包的編號(hào),則認(rèn)定該文件數(shù)據(jù)包不是重復(fù)的文件數(shù)據(jù)包,則保存該文件數(shù)據(jù)包,客戶端應(yīng)用程序向TFTP服務(wù)器發(fā)送一個(gè)ACK確認(rèn)包。如圖2所示,本發(fā)明的遠(yuǎn)程文件傳輸系統(tǒng)包括服務(wù)器(TFTP服務(wù)器201)和客戶端 202(內(nèi)設(shè)客戶端應(yīng)用程序),兩者之前通過(guò)有線網(wǎng)絡(luò)或者無(wú)線網(wǎng)絡(luò)連接。服務(wù)器主要是提供遠(yuǎn)程傳輸文件和發(fā)送數(shù)據(jù)包(根據(jù)客戶端的請(qǐng)求)??蛻舳酥饕?fù)責(zé)以下操作發(fā)送遠(yuǎn)程文件傳輸請(qǐng)求數(shù)據(jù)包、接收數(shù)據(jù)包、判斷數(shù)據(jù)包、保存數(shù)據(jù)包、發(fā)送確認(rèn)數(shù)據(jù)包??蛻舳藨?yīng)用程序發(fā)送遠(yuǎn)程文件傳輸請(qǐng)求,通過(guò)網(wǎng)絡(luò)把請(qǐng)求數(shù)據(jù)包發(fā)給服務(wù)器,接著就等待著服務(wù)器發(fā)送的數(shù)據(jù)包??蛻舳藨?yīng)用程序接收到TFTP服務(wù)器發(fā)送的數(shù)據(jù)包??蛻舳藨?yīng)用程序?qū)邮盏降臄?shù)據(jù)包進(jìn)行判斷,判斷是不是重復(fù)數(shù)據(jù)包,是不是最后一個(gè)數(shù)據(jù)包。 客戶端應(yīng)用程序根據(jù)判斷結(jié)果保存接收到的數(shù)據(jù)包。客戶端應(yīng)用程序保存接收到的數(shù)據(jù)包之后向服務(wù)器發(fā)送一個(gè)確認(rèn)數(shù)據(jù)包。
權(quán)利要求
1.一種簡(jiǎn)單可靠的遠(yuǎn)程文件傳輸方法,其特征是,包括以下步驟a.用戶啟動(dòng)遠(yuǎn)程文件傳輸程序(S301),進(jìn)行遠(yuǎn)程文件傳輸程序的初始化;然后進(jìn)入超時(shí)次數(shù)判斷步驟客戶端應(yīng)用程序判斷是否超時(shí)次數(shù)X > N(N為自然數(shù)且N > 2) (S302), 若超時(shí)次數(shù)X < N則轉(zhuǎn)入步驟b,若超時(shí)次數(shù)X > N則重新啟動(dòng)遠(yuǎn)程文件傳輸程序;b.客戶端應(yīng)用程序把用于請(qǐng)求遠(yuǎn)程文件傳輸?shù)恼?qǐng)求數(shù)據(jù)包發(fā)給TFTP服務(wù)器(S303);c.TFTP服務(wù)器(201)接收客戶端(20 發(fā)送的請(qǐng)求數(shù)據(jù)包,并根據(jù)請(qǐng)求數(shù)據(jù)包向客戶端(20 發(fā)送文件數(shù)據(jù)包;d.客戶端(20 接收TFTP服務(wù)器(201)發(fā)送的文件數(shù)據(jù)包,并由客戶端應(yīng)用程序?qū)λ邮盏奈募?shù)據(jù)包進(jìn)行判斷,判斷該文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包(S307);如果該文件數(shù)據(jù)包不是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟e ;如果該文件數(shù)據(jù)包是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟f;e.由客戶端應(yīng)用程序判斷該文件數(shù)據(jù)包是不是重復(fù)的文件數(shù)據(jù)包(S308),如果是重復(fù)的文件數(shù)據(jù)包,則丟棄該文件數(shù)據(jù)包(S309),客戶端應(yīng)用程序向TFTP服務(wù)器O01)發(fā)送一個(gè)ACK確認(rèn)包(S311),跳轉(zhuǎn)回步驟d ;如果不是重復(fù)的文件數(shù)據(jù)包,則保存該文件數(shù)據(jù)包 (S310),客戶端應(yīng)用程序向TFTP服務(wù)器O01)發(fā)送一個(gè)ACK確認(rèn)包,跳轉(zhuǎn)回步驟d;f.客戶端應(yīng)用程序向TFTP服務(wù)器O01)發(fā)送一個(gè)ACK確認(rèn)包(S312),然后結(jié)束文件傳輸工作。
2.根據(jù)權(quán)利要求1所述的遠(yuǎn)程文件傳輸方法,其特征是,在所述步驟d中,客戶端應(yīng)用程序在接收TFTP服務(wù)器(201)發(fā)送的文件數(shù)據(jù)包時(shí),判斷客戶端應(yīng)用程序從發(fā)出請(qǐng)求數(shù)據(jù)包的時(shí)刻起,是否在預(yù)設(shè)時(shí)間Tl內(nèi)接收到TFTP服務(wù)器O01)發(fā)送的第一個(gè)文件數(shù)據(jù)包 (S304),若客戶端應(yīng)用程序未在預(yù)設(shè)時(shí)間Tl內(nèi)接收到第一個(gè)文件數(shù)據(jù)包,則將超時(shí)次數(shù)X 加1后返回所述步驟a的超時(shí)次數(shù)判斷步驟;若客戶端應(yīng)用程序在預(yù)設(shè)時(shí)間Tl內(nèi)接收到第一個(gè)文件數(shù)據(jù)包,則客戶端應(yīng)用程序向TFTP服務(wù)器(201)發(fā)送一個(gè)ACK確認(rèn)包(S305);在所述步驟d中,客戶端接收TFTP服務(wù)器O01)發(fā)送的第K個(gè)文件數(shù)據(jù)包時(shí)(K為自然數(shù)且K >幻,判斷客戶端應(yīng)用程序從開(kāi)始接收第K個(gè)文件數(shù)據(jù)包的時(shí)刻起,是否在預(yù)設(shè)時(shí)間T2內(nèi)接收到第K個(gè)文件數(shù)據(jù)包(S306),若客戶端應(yīng)用程序未在預(yù)設(shè)時(shí)間T2內(nèi)接收到第 K個(gè)文件數(shù)據(jù)包,則返回步驟a ;若客戶端應(yīng)用程序在預(yù)設(shè)時(shí)間T2內(nèi)接收到第K個(gè)文件數(shù)據(jù)包,判斷第K個(gè)文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包(S307);如果第K個(gè)文件數(shù)據(jù)包不是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟e ;如果第K個(gè)文件數(shù)據(jù)包是最后一個(gè)文件數(shù)據(jù)包,則轉(zhuǎn)入步驟f。
3.根據(jù)權(quán)利要求1所述的遠(yuǎn)程文件傳輸方法,其特征是,在所述步驟d中,客戶端應(yīng)用程序判斷文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包(S307)的方法是若文件數(shù)據(jù)包的長(zhǎng)度小于512字節(jié),則判定該文件數(shù)據(jù)包為最后一個(gè)文件數(shù)據(jù)包。
4.根據(jù)權(quán)利要求1所述的遠(yuǎn)程文件傳輸方法,其特征是,在所述步驟e中,客戶端應(yīng)用程序判斷文件數(shù)據(jù)包是不是重復(fù)的文件數(shù)據(jù)包(S308)的方法是獲取該文件數(shù)據(jù)包的編號(hào),并將該文件數(shù)據(jù)包的編號(hào)與上一個(gè)文件數(shù)據(jù)包的編號(hào)相比較,如果該文件數(shù)據(jù)包的編號(hào)不大于上一個(gè)文件數(shù)據(jù)包的編號(hào),則認(rèn)定該文件數(shù)據(jù)包為重復(fù)的文件數(shù)據(jù)包。
全文摘要
本發(fā)明公開(kāi)了一種簡(jiǎn)單可靠的遠(yuǎn)程文件傳輸方法,用戶啟動(dòng)遠(yuǎn)程文件傳輸程序,客戶端應(yīng)用程序把請(qǐng)求數(shù)據(jù)包發(fā)給TFTP服務(wù)器;TFTP服務(wù)器向客戶端發(fā)送文件數(shù)據(jù)包;客戶端接收TFTP服務(wù)器發(fā)送的文件數(shù)據(jù)包,并判斷文件數(shù)據(jù)包是不是最后一個(gè)文件數(shù)據(jù)包和是不是重復(fù)的文件數(shù)據(jù)包;接收完最后一個(gè)文件數(shù)據(jù)包后,客戶端應(yīng)用程序向TFTP服務(wù)器發(fā)送一個(gè)ACK確認(rèn)包,然后結(jié)束文件傳輸工作。本發(fā)明的遠(yuǎn)程文件傳輸方法,具有實(shí)現(xiàn)簡(jiǎn)單、數(shù)據(jù)傳輸可靠性和傳輸效率高等優(yōu)點(diǎn)。
文檔編號(hào)H04L1/18GK102201903SQ20111015029
公開(kāi)日2011年9月28日 申請(qǐng)日期2011年6月7日 優(yōu)先權(quán)日2011年6月7日
發(fā)明者王凱 申請(qǐng)人:合肥華云通信技術(shù)有限公司