本文建立在你對socket
知識有一點點的基礎之上(有一點點就足夠了:))
ftp客戶端實現要建立兩個通道,乙個控制命令通道,讓ftp伺服器知道客戶端要幹什麼,乙個資料傳輸通道。所謂的兩個通道只不過是兩個呼叫了connect函式的連線,只是控制命令通道專門用來傳輸一些字串命令資訊,而資料通道則是用來傳輸檔案。控制命令通道一定是由客戶端向伺服器的連線(預設的埠是21,也可以指定埠,這要看伺服器的設定)。連線的過程完成了ftp的登入。資料通道則不一定啦,具體哪個連哪個,請看下面對pasv命令的解釋。
客戶端的實現步驟如下:
3、客戶端定位本地檔案指標(檔案末尾);
4、兩端的準備工作都做完了以後,客戶端建立socket,以被動或非被動方式建立資料通道,迴圈呼叫recv接收資料並追加入本地檔案;
二、上傳:
1、獲取伺服器上和本地要上傳檔案的同名檔案大小;
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,也可以指...