首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用commons.net.ftp的手动FTP

使用commons.net.ftp的手动FTP
EN

Stack Overflow用户
提问于 2013-03-19 10:12:44
回答 1查看 1.8K关注 0票数 2

我正在尝试使用apache发送手动FTP命令,因为我必须将非标准的FTP命令发送到特定的服务器(接受这些命令的服务器)。

在尝试发送这些非标准命令之前,我想让FTP与commons.net.ftp一起手动工作。不幸的是我好像漏掉了什么。

这是一个很好的(即它检索文件列表)

代码语言:javascript
运行
复制
FTPClient ftp = new FTPClient();
FTPClientConfig config = new FTPClientConfig();
ftp.configure(config);

ftp.connect("ftp.mozilla.org");
ftp.login("anonymous", "");

ftp.enterLocalPassiveMode();
FTPFile[] fileList = ftp.listFiles("/");

,这不是

代码语言:javascript
运行
复制
FTPClient ftp = new FTPClient();
FTPClientConfig config = new FTPClientConfig();
ftp.configure(config);

ftp.connect("ftp.mozilla.org");
ftp.login("anonymous", "");

ftp.sendCommand("PASV");
ftp.sendCommand("NLST");

我得到了ftp.sendCommand("PASV");的适当响应,但在ftp.sendCommand("NLST");上超时,最终给了我

代码语言:javascript
运行
复制
425 Failed to establish connection.

我尝试过研究这个主题,但是关于这个错误的大多数建议都是针对设置服务器的人的(通常是防火墙问题)。

为什么当net.ftp这样做时它会工作,而当我手动发送命令时却不能工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-19 10:42:34

手动发送PASV命令是不够的,客户端必须打开到服务器指定端口的数据连接,以响应PASV命令。这是通过调用enterLocalPassiveMode()方法来执行的。由于手动发送PASV不初始化数据连接,所以在此之后不久就会出现错误。

有关FTP协议的详细信息,请参阅http://slacksite.com/other/ftp.html#passive

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15496606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档