小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

FTP實(shí)現(xiàn)斷點(diǎn)續(xù)傳

 cupid 2016-01-06
FTP客戶(hù)端實(shí)現(xiàn)要建立兩個(gè)通道,一個(gè)控制命令通道,讓FTP服務(wù)器知道客戶(hù)端要干什么,一個(gè)數(shù)據(jù)傳輸通道。所謂的兩個(gè)通道只不過(guò)是兩個(gè)調(diào)用了connect函數(shù)的連接,只是控制命令通道專(zhuān)門(mén)用來(lái)傳輸一些字符串命令信息,而數(shù)據(jù)通道則是用來(lái)傳輸文件。控制命令通道一定是由客戶(hù)端向服務(wù)器的連接(默認(rèn)的端口是21,也可以指定端口,這要看服務(wù)器的設(shè)置)。連接的過(guò)程完成了FTP的登錄。數(shù)據(jù)通道則不一定啦,具體哪個(gè)連哪個(gè),請(qǐng)看下面對(duì)PASV命令的解釋。 
 
  其實(shí)FTP斷點(diǎn)續(xù)傳的原理很簡(jiǎn)單,可分為斷點(diǎn)下載和斷點(diǎn)上傳。 
  客戶(hù)端的實(shí)現(xiàn)步驟如下: 
一、下載:  
1、向服務(wù)器發(fā)送“REST + 本地文件長(zhǎng)度”命令,告訴服務(wù)器,客戶(hù)端要斷點(diǎn)下載了。這時(shí)服務(wù)器還不知道客戶(hù)端要下載哪個(gè)文件; 
   要實(shí)現(xiàn)FTP的斷點(diǎn)續(xù)傳,F(xiàn)TP服務(wù)器必須支持REST指令,這條指令在FTP協(xié)議文本RFC959中就已經(jīng)定義了,不過(guò)它不是FTP服務(wù)器必須支持的指令。一般,你可以在下載前使用REST 100命令進(jìn)行實(shí)驗(yàn),如果服務(wù)器正常執(zhí)行了這條命令,說(shuō)明該服務(wù)器支持FTP斷點(diǎn)續(xù)傳。REST后面跟的數(shù)表示下載文件的起始位置,而REST 0表示從文件最開(kāi)始處下載。REST命令本身并不執(zhí)行下載功能,你仍需要使用RETR命令執(zhí)行下載工作。 
2、向服務(wù)器發(fā)送“RETR + 文件名”命令,通知服務(wù)器要下載的文件名,這時(shí)服務(wù)器開(kāi)始定位文件指針讀文件并發(fā)送數(shù)據(jù)。 
3、客戶(hù)端定位本地文件指針(文件末尾); 
4、兩端的準(zhǔn)備工作都做完了以后,客戶(hù)端創(chuàng)建socket,以被動(dòng)或非被動(dòng)方式建立數(shù)據(jù)通道,循環(huán)調(diào)用recv接收數(shù)據(jù)并追加入本地文件; 
 
二、上傳: 
1、獲取服務(wù)器上和本地要上傳文件的同名文件大小; 
2、向服務(wù)器發(fā)送“APPE + 文件名”,通知服務(wù)器,接下來(lái)從數(shù)據(jù)通道發(fā)送給你的數(shù)據(jù)要附加到這個(gè)文件末尾。 
3、定位本地文件指針(和FTP上文件大小相同的位置) 
4、從文件指針處讀數(shù)據(jù)并發(fā)送。 
 
  好了,F(xiàn)TP斷點(diǎn)續(xù)傳的原理就這么簡(jiǎn)單。代碼里將斷點(diǎn)上傳和斷點(diǎn)下載放到同一個(gè)函數(shù)(MoveFile)里,通過(guò)get參數(shù)說(shuō)明是上傳還是下載。當(dāng)然,整個(gè)FTP類(lèi)的實(shí)現(xiàn)有800多行,包括登錄、退出、獲取FTP文件大小、刪除FTP服務(wù)器上文件、響應(yīng)服務(wù)器,解析響應(yīng)信息等函數(shù)。相應(yīng)的注釋代碼里都有,這里就不一一熬述了。 
 
  這里重點(diǎn)說(shuō)說(shuō)PASV模式,即被動(dòng)模式,這是FTP命令里比較不容易理解的一個(gè),這條命令請(qǐng)求服務(wù)器在某個(gè)端口(非FTP默認(rèn)端口或控制命令端口)創(chuàng)建一個(gè)監(jiān)聽(tīng)socket,服務(wù)器創(chuàng)建的端口號(hào)會(huì)在客戶(hù)端的控制命令通道上得到響應(yīng)。得到這個(gè)端口號(hào)后,客戶(hù)端就可以創(chuàng)建新的socket(數(shù)據(jù)通道)connect過(guò)去,并進(jìn)行文件傳輸?shù)裙ぷ鳌7駝t,如果為非被動(dòng)模式,那么監(jiān)聽(tīng)的socket由客戶(hù)端創(chuàng)建,服務(wù)器connect過(guò)來(lái)。 
 
  對(duì)于這條命令的存在我是這么理解的,存在這么一種情況:客戶(hù)端的IP是個(gè)內(nèi)網(wǎng)的IP,服務(wù)器的IP是個(gè)外網(wǎng)的,當(dāng)進(jìn)行數(shù)據(jù)傳輸時(shí)內(nèi)網(wǎng)的IP對(duì)于服務(wù)器是不可見(jiàn)的,只有由服務(wù)器啟動(dòng)監(jiān)聽(tīng)socket才能建立數(shù)據(jù)通道,所以必須以被動(dòng)模式進(jìn)行。:)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多