问题描述
我使用的FTPClient:import org.apache.commons.net.ftp.FTPClient;
java中下载FTP文件,但是
FTP登录成功,FTPClient访问文件,却卡住。
代码(伪代码):
boolean res = f.login();
FTPFile[] list = f.ftp.listFiles("/");
打印日志:
220 Serv-U FTP Server v6.4 for WinSock ready...
USER zhhzhx
331 User name okay, need password.
PASS Its.info
230 User logged in, proceed.
登陆成功
SYST
215 UNIX Type: L8
PORT 192,168,1,106,213,244
200 PORT Command successful.
LIST /
150 Opening ASCII mode data connection for /bin/ls.
解决思路
FTP是有两种数据连接模式的,主动模式和被动模式。
PORT(主动)方式:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客