乙個實現FTP斷點續傳的類

2021-03-31 08:56:58 字數 1164 閱讀 9795

本文建立在你對

socket

知識有一點點的基礎之上(有一點點就足夠了:))

ftp客戶端實現要建立兩個通道,乙個控制命令通道,讓

ftp伺服器知道客戶端要幹什麼,乙個資料傳輸通道。所謂的兩個通道只不過是兩個呼叫了

connect

函式的連線,只是控制命令通道專門用來傳輸一些字串命令資訊,而資料通道則是用來傳輸檔案。控制命令通道一定是由客戶端向伺服器的連線(預設的埠是

21,也可以指定埠,這要看伺服器的設定)。連線的過程完成了

ftp的登入。資料通道則不一定啦,具體哪個連哪個,請看下面對

pasv

命令的解釋。

其實ftp

客戶端的實現步驟如下:

1、向伺服器傳送「

rest +

2、向伺服器傳送「

retr +

3、客戶端定位本地檔案指標(檔案末尾);

4、兩端的準備工作都做完了以後,客戶端建立

socket

,以被動或非被動方式建立資料通道,迴圈呼叫

recv

接收資料並追加入本地檔案;

二、上傳:

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

2、向伺服器傳送「

+檔名」,通知伺服器:接下來從資料通道傳送給你的資料要附加到這個檔案末尾。

3、定位本地檔案指標(和

ftp上檔案大小相同的位置)

4這裡重點說說pasv

模式,即被動模式,這是

ftp命令裡比較不容易理解的乙個,這條命令請求伺服器在某個埠(非

ftp預設埠或控制命令埠)建立乙個監聽

socket

,伺服器建立的埠號會通過控制命令通道返回給客戶端。得到這個埠號後,客戶端就可以建立新的

socket

(資料通道)

connect

過去,並進行檔案傳輸等工作。否則,如果為非被動模式,那麼監聽的

socket

由客戶端建立,伺服器

connect

過來。對於這條命令的存在我是這麼理解的,存在這麼一種情況:客戶端的

ip是個內網的

ip,伺服器的

ip是個外網的,當進行資料傳輸時內網的

ip對於伺服器是不可見的,只有由伺服器啟動監聽

socket

乙個實現FTP斷點續傳的類

本文建立在你對socket 知識有一點點的基礎之上 有一點點就足夠了 ftp客戶端實現要建立兩個通道,乙個控制命令通道,讓ftp伺服器知道客戶端要幹什麼,乙個資料傳輸通道。所謂的兩個通道只不過是兩個呼叫了connect函式的連線,只是控制命令通道專門用來傳輸一些字串命令資訊,而資料通道則是用來傳輸檔...

乙個實現FTP斷點續傳的類

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

FTP實現斷點續傳

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