ftp斷點續傳工具
1. ftp該如何實現斷點續傳
客戶端的實現步驟如下:
一、下載:
1、向伺服器發送「REST + 本地文件長度」命令,告訴伺服器,客戶端要斷點下載了。這時伺服器還不知道客戶端要下載哪個文件;
要實現FTP的斷點續傳,FTP伺服器必須支持REST指令,這條指令在FTP協議文本RFC959中就已經定義了,不過它不是FTP伺服器必須支持的指令。一般,你可以在下載前使用REST 100命令進行實驗,如果伺服器正常執行了這條命令,說明該伺服器支持FTP斷點續傳。REST後面跟的數表示下載文件的起始位置,而REST 0表示從文件最開始處下載。REST命令本身並不執行下載功能,你仍需要使用RETR命令執行下載工作。
2、向伺服器發送「RETR + 文件名」命令,通知伺服器要下載的文件名,這時伺服器開始定位文件指針讀文件並發送數據。
3、客戶端定位本地文件指針(文件末尾);
4、兩端的准備工作都做完了以後,客戶端創建socket,以被動或非被動方式建立數據通道,循環調用recv接收數據並追加入本地文件;
二、上傳:
1、獲取伺服器上和本地要上傳文件的同名文件大小;
2、向伺服器發送「APPE + 文件名」,通知伺服器,接下來從數據通道發送給你的數據要附加到這個文件末尾。
3、定位本地文件指針(和FTP上文件大小相同的位置)
4、從文件指針處讀數據並發送。
代碼里將斷點上傳和斷點下載放到同一個函數(MoveFile)里,通過get參數說明是上傳還是下載。
2. 怎麼用libcurl實現ftp斷點續傳
這個需要FTP server支持append,我之前用它的命令行測試過的,libcurl可以實現斷點續傳。
3. 什麼是FTP斷點續傳
有時用戶通過FTP下傳文件需要歷時數小時,萬一線路中斷,不具備FTP斷點續傳的FTP伺服器就只能從頭重傳;中國萬網「虛擬主機」上的FTP伺服器具有FTP斷點續傳能力,允許用戶從上傳斷線的地方繼續傳動,這樣大大減少了用戶的煩惱。