怎樣能讓FTP自動斷點傳續?
二、上傳:
1、獲取服務器上和本地要上傳文件的同名文件大小;
2、向服務器發送“APPE + 文件名”,通知服務器,接下來從數據通道發送給你的數據要附加到這個文件末尾。
3、定位本地文件指針(和FTP上文件大小相同的位置)
4、從文件指針處讀數據并發送。 好 了,FTP斷點續傳的原理就這么簡單。代碼里將斷點上傳和斷點下載放到同一個函數(MoveFile)里,通過get參數說明是上傳還是下載。
當然,整個 FTP類的實現有800多行,包括登錄、退出、獲取FTP文件大小、刪除FTP服務器上文件、響應服務器,解析響應信息等函數。
相應的注釋代碼里都有,這 里就不一一熬述了。 這里重點說說PASV模式,即被動模式,這是FTP命令里比較不容易理解的一個,這條命令請求服務器在某個端口(非FTP默認端口或控制命令端口)創建一個監聽socket,服務器創建的端口號會在客戶端的控制命令通道上得到響應。
得到這個端口號后,客戶端就可以創建新的 socket(數據通道)connect過去,并進行文件傳輸等工作。
否則,如果為非被動模式,那么監聽的socket由客戶端創建,服務器connect過來。
對于這條命令的存在我是這么理解的,存在這么一種情況:客戶端的IP是個內網的IP,服務器的IP是個外網的,當進行數據傳輸時內網的IP對于服務器是不可見的,只有由服務器啟動監聽socket才能建立數據通道,所以必須以被動模式進行。:)
上一篇cpp模板的優點