Ftp主動模式和被動模式以及java連接ftp模式設置


(1) PORT(主動模式)

PORT中文稱為主動模式,工作的原理: FTP客戶端連接到FTP服務器的21端口,發送用戶名和密碼登錄,登錄成功后要list列表或者讀取數據時,客戶端隨機開放一個端口(1024以上),發送 PORT命令到FTP服務器,告訴服務器客戶端采用主動模式並開放端口;FTP服務器收到PORT主動模式命令和端口號后,通過服務器的20端口和客戶端開放的端口連接,發送數據,原理如下圖。

 

 (2) PASV(被動模式)

    PASV是Passive的縮寫,中文成為被動模式,工作原理:FTP客戶端連接到FTP服務器的21端口,發送用戶名和密碼登錄,登錄成功后要list列表或者讀取數據時,發送PASV命令到FTP服務器, 服務器在本地隨機開放一個端口(1024以上),然后把開放的端口告訴客戶端, 客戶端再連接到服務器開放的端口進行數據傳輸,原理如下圖:

    2.兩種模式的比較

     從上面的運行原來看到,主動模式和被動模式的不同簡單概述為: 主動模式傳送數據時是“服務器”連接到“客戶端”的端口;被動模式傳送數據是“客戶端”連接到“服務器”的端口。

    主動模式需要客戶端必須開放端口給服務器,很多客戶端都是在防火牆內,開放端口給FTP服務器訪問比較困難。

    被動模式只需要服務器端開放端口給客戶端連接就行了。

參考文獻 http://www.cnblogs.com/mawanglin2008/articles/3607767.html

3.java中,內網用被動模式 ,外網連接時用主動模式,服務器相應改動(只用上線功能用被動模式去連接ftp報錯連接不上)

FTPClient ftpClient = new FTPClient();

ftpClient.connect(url, port);

ftpClient.enterLocalActiveMode();    //主動模式
// ftpClient.enterLocalPassiveMode(); 被動模式
ftpClient.setControlEncoding("UTF-8");
ftpClient.changeWorkingDirectory(path);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM