FTP Client enterLocalPassiveMode
2017-03-15 16:20
435 查看
在项目中使用commons-net-3.0.1.jar实现FTP文件的下载,在windows xp上运行正常,但是放到linux上,却出现问题,程序运行到
FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就停止在那里,什么反应都没有,出现假死状态。google一把,发现很多人也出现了此类问题,最终在一个帖子里找到了解决办法。在调用这两个方法之前,调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。
另外,如果程序部署在weblogic上, 也有可能出现一些问题,为什么,因为weblogic自己也有commons-net包,如果weblogic的jar包版本低于你使用的版本,就设置weblogic 的classpath,优先加载工程里的jar包。
详解list 和listFlile:首先调用list()方法的话,返回的是一个String类型的字符串数组,它返回的是dir目录下一级的所有文件的目录,但它是以字符串的形式存在,然而java并不会识别该字符串类型的目录,因为java不确定该string是否是一个文件目录,或者还是只是一个数字或者其他类型的对象,只能简单的将它显示出来
然后调用listFile()方法的话,返回的是一个文件类型的文件数组,返回的也是dir目录下一级的所有文件的目录,但与string类型不同的是,java可以自动识别文件类型的对象,知道返回的是一个File类型的对象,所以可以调用相应的方法进行递归遍历,而String 类型可能是因为系统没有配备相应的方法,所以不能做判断是否是目录,并且进行递归遍历的操作
相关文章推荐
- 阿里云FTP上传win能成功,linux上传失败ftpClient.enterLocalPassiveMode()连接超时
- FTP Client enterLocalPassiveMode
- FTP Client enterLocalPassiveMode
- FTP Client enterLocalPassiveMode
- FTPClient中的enterLocalPassiveMode();方法
- JAVA 连接ftp上传下载报错 connection reset ,ftp.enterLocalPassiveMode(),
- 【VSFTP】FTP连接时出现“227 Entering Passive Mode” 的解决方法
- FTP连接时出现“227 Entering Passive Mode” 的解决方法
- FTP连接时出现“227 Entering Passive Mode”的解决方法
- [转载]ftp passive mode and active mode
- FTP连接时出现“227 Entering Passive Mode”的解决方法
- 解决ftp客户端卡在Entering Extended Passive Mode的问题
- View Client with Local Mode简述
- 【解决 FTP】windows访问Ubuntu的vsftpd(FTP服务器)问题200 Switching to ASCII mode,227 Entering Passive Mode (0,0,0
- FTP连接时出现“227 Entering Passive Mode” 的解决方法
- 连接ftp时出现Entering Passive Mode
- FTP连接时出现“227 Entering Passive Mode” 的解决方法(附加实际案例)
- FTP连接时出现“227 Entering Passive Mode” 的解决方法
- Linux expect问题集:227 Entering Passive Mode (10,41,49,10,218,187). ftp: connect: Connection timed out