FTP實現斷點續傳

2021-07-02 01:59:26 字數 760 閱讀 7714

ftp客戶端實現要建立兩個通道:乙個控制命令通道,讓ftp伺服器知道客戶端要幹什麼,乙個是資料傳輸通道。所謂的兩個通道只不過是兩個呼叫了connect函式的連線,只是控制命令通道專門用來傳輸一些字串命令資訊,而資料通道則是用來傳輸檔案。控制命令通道一定是由客戶端向伺服器的連線(預設的埠是21,也可以指定埠,這要看伺服器的設定)。連線的過程完成了ftp的登入。資料通道則不一定啦,具體哪個連哪個,請看下面pasv命令的解釋。

客戶端的實現步驟如下:

4、兩端的準備工作都做完了以後,客戶端建立socket,以被動或非被動方式建立資料通道,迴圈呼叫recv接收資料並追加入本地檔案;

二、上傳: 

1、獲取伺服器上和本地要上傳檔案的同名檔案大小; 

3、定位本地檔案指標(和ftp上檔案大小相同的位置) 

4、從檔案指標處讀資料並傳送。 

這裡重點說說pasv模式,即被動模式,這是ftp命令裡比較不容易理解的乙個,這條命令請求伺服器在某個埠(非ftp預設埠或控制命令埠)建立乙個監聽socket,伺服器建立的埠號會在客戶端的控制命令通道上得到響應。得到這個埠號後,客戶端就可以建立新的socket(資料通道)connect過去,並進行檔案傳輸等工作。否則,如果為非被動模式,那麼監聽的socket由客戶端建立,伺服器connect過來。 

對於這條命令的存在我是這麼理解的,存在這麼一種情況:客戶端的ip是個內網的ip,伺服器的ip是個外網的,當進行資料傳輸時內網的ip對於伺服器是不可見的,只有由伺服器啟動監聽socket才能建立資料通道,所以必須以被動模式進行。:)

FTP實現斷點續傳

ftp客戶端實現要建立兩個通道,乙個控制命令通道,讓ftp伺服器知道客戶端要幹什麼,乙個資料傳輸通道。所謂的兩個通道只不過是兩個呼叫了connect函式的連線,只是控制命令通道專門用來傳輸一些字串命令資訊,而資料通道則是用來傳輸檔案。控制命令通道一定是由客戶端向伺服器的連線 預設的埠是21,也可以指...

ftp斷點續傳

import open.mis.data.downloadstatus import open.mis.data.uploadstatus import org.apache.commons.net.printcommandlistener import org.apache.commons.net...

C 實現FTP斷點續傳

一 前言 在internet網際網路應用程式支援上,microsoft提供了win32 internet api函式支援,此型別的api是由wininet.dll動態鏈結函式庫所提供的。win32 internet api 即 wininet 幫助實現對 gopher ftp 和 http 等常用 ...