環境:java
(1)服務器爲阿里雲服務器,有公網ip,有內網ip,公網和內網已經作了相關端口的映射,ftp服務器爲FileZilla,ftp服務器被動模式已開啓,防火牆已關閉服務器
(2)ftp客戶端爲java寫的網絡
問題:筆記本使用網線鏈接經過java寫的ftp客戶端能夠進行下載。可是使用wifi鏈接經過java寫的ftp客戶端卻只能登錄,不能list也不能下載。阿里雲
問題緣由分析:ftp客戶端鏈接ftp服務器默認狀況下,使用的是ftp主動鏈接方式(port),當客戶機網絡沒有和路由器有ip映射的時候,ftp服務器主動模式找不到客戶端IP,就會形成能夠登錄ftp可是不能進行list以及上傳下載的操做;可是被動模式(pass)狀況下的邏輯是ftp服務器給客戶端開闢一個新的端口(ftp被動端口範圍內),讓客戶機鏈接此端口,並請求其它操做。ip
(3)解決方法:java客戶端不使用默認的主動模式,改用被動模式可解決問題;具體代碼,在鏈接ftp服務器後面加一句設置ftp傳輸模式的代碼:client.enterLocalPassiveMode();路由