【发布时间】:2016-08-03 13:33:36
【问题描述】:
我正在创建一个 apache FTPS 客户端(因为远程服务器不允许普通 FTP)。我可以毫无问题地连接和删除文件,但是当使用retrieveFile() 或retrieveFileStream() 时,它会挂起。
出于某种原因,确实传输了非常小的文件(最多 5792 字节),但其他任何内容都会提供以下 PrintCommandListener 输出:
运行:
220--------- 欢迎使用 Pure-FTPd [privsep] [TLS] ----------
220-您是允许的 50 个用户中的第 2 个用户。
220-当地时间现在是19:42。服务器端口:21.
220-这是一个私人系统 - 没有匿名登录
此服务器也欢迎 220-IPv6 连接。
220 您将在 15 分钟不活动后断开连接。
身份验证 TLS
234 身份验证 TLS 正常。
用户
331 用户正常。需要密码
通过
230 好的。当前受限目录是 /
A型
200 TYPE 现在是 ASCII
EPSV
229 扩展被动模式正常 (|||53360|)
RETR 测试.txt
150-接受数据连接
150 7.3 KB 要下载
代码如下:
try {
FTPSClient ftpClient = new FTPSClient("tls",false);
ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
ftpClient.connect(host, port);
int reply = ftpClient.getReplyCode();
if (FTPReply.isPositiveCompletion(reply)) {
ftpClient.enterLocalPassiveMode();
ftpClient.login(username, password);
ftpClient.enterLocalPassiveMode();
FileOutputStream outputStream = new FileOutputStream(tempfile);
ftpClient.setFileType(FTPClient.ASCII_FILE_TYPE);
ftpClient.retrieveFile("test.txt", outputStream);
outputStream.close();
ftpClient.logout();
ftpClient.disconnect();
}
} catch (IOException ioe) {
System.out.println("FTP client received network error");
}
非常感谢任何想法。
【问题讨论】:
-
请正确格式化您的代码。您可以使用编辑器顶部提供的工具对其进行标记和点击格式。
标签: java apache ftp ftp-client ftps