笔记本使用网线连接可以进行ftp下载,但是通过wifi连接只能登陆不能下载的问题。

时间:2021-11-29 03:19:58

环境:

(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被动端口范围内),让客户机连接此端口,并请求其它操作。

(3)解决方法:java客户端不使用默认的主动模式,改用被动模式可解决问题;具体代码,在连接ftp服务器后面加一句设置ftp传输模式的代码:client.enterLocalPassiveMode();