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斷點續傳的類
本文建立在你對 socket 知識有一點點的基礎之上 有一點點就足夠了 ftp客戶端實現要建立兩個通道,乙個控制命令通道,讓 ftp伺服器知道客戶端要幹什麼,乙個資料傳輸通道。所謂的兩個通道只不過是兩個呼叫了 connect 函式的連線,只是控制命令通道專門用來傳輸一些字串命令資訊,而資料通道則是用...
FTP實現斷點續傳
ftp客戶端實現要建立兩個通道,乙個控制命令通道,讓ftp伺服器知道客戶端要幹什麼,乙個資料傳輸通道。所謂的兩個通道只不過是兩個呼叫了connect函式的連線,只是控制命令通道專門用來傳輸一些字串命令資訊,而資料通道則是用來傳輸檔案。控制命令通道一定是由客戶端向伺服器的連線 預設的埠是21,也可以指...