Java中apache下面FtpClient主動模式和被動模式


  最近在做ftp文件上傳的時候,開發測試環境上傳都沒有問題,但是在開發環境缺無法上傳,但是也沒有報錯,糾結了老久。最后看到網上有說FtpClient有主動模式和被動模式之分,然后就解決了。

  FTPClient連接FTP服務的時候,Java中org.apache.commons.net.ftp.FTPClient默認使用的應該是主動模式。所謂主動模式:就是指客戶端連接服務端的時候,告訴服務端,我們之間要進行通訊,數據交換。我申請開辟一個端口,專門用於我們之間的通信,也即C(client)端主動向S(Server)端發起的請求。被動模式就是指,一開始服務一起來,S端變開啟一個端口告訴C端,我們之間的通訊就在這個端口下。也就C端被動的接受服務端。

  在文件上傳處加上如下代碼:

ftpClient.enterLocalPassiveMode();

  調用FTPClient.enterLocalPassiveMode();這個方法的意思就是每次數據連接之前,ftp client告訴ftp server開通一個端口來傳輸數據。為什么要這樣做呢,因為ftp server可能每次開啟不同的端口來傳輸數據,但是在linux上,由於安全限制,可能某些端口沒有開啟,所以就出現阻塞。同時,在下載的地方也需要開啟被動模式。


免責聲明!

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



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