【问题标题】:FTP client in Java doesn´t work properly when sending commandsJava 中的 FTP 客户端在发送命令时无法正常工作
【发布时间】:2011-11-14 12:15:19
【问题描述】:

我正在使用标准 Java 套接字在 Java 中制作一个简单的 FTP 客户端。我已成功连接到服务器。然后我可以发送 FTP 命令,例如:

USER myUserName
PASS myPassword

并且输出表明我已登录到服务器(我总是将 \r\n 字符串与我发送到服务器的每个命令一起发送)。当我发送命令“ls”时,我得到以下回复:425 No data connection

当我从 MS Windows 终端从标准 FTP 客户端登录到服务器时,我可以使用“ls”命令并获取所有文件和文件夹的列表,但它在我的 Java 应用程序中不起作用。

FTP 命令“HELP”在我的客户端和 MS Windows 的标准 FTP 客户端中也提供了不同的输出。

我做错了什么?

【问题讨论】:

    标签: java ftp


    【解决方案1】:

    您需要使用 PORT 或 PASV 建立数据连接。文件列表没有通过控制连接。您将不得不阅读 ftp。 windows中ftp命令的命令与协议中的命令不是1:1对应的,你自己实现时必须使用。

    【讨论】:

    • 哦,好的!所以会话看起来像这样:USER myUserNamePASS myPasswordPASV 然后我得到 IP 和端口作为我建立新连接的响应?那么输入 USER 和 PASS 后,是不是总要输入 PASV 或 PORT 命令呢?
    • 1.问题是的。 2. 问题:接近,但不完全。该规则在您需要使用 PORT 或 PASV 进行新连接的每个 LIST、RETR、STOR 等之前。因此,您的登录顺序可能类似于 user、pass、pasv、list。尝试将 FEAT 发送到您的 ftp 服务器,它应该以它理解的所有命令进行响应。也许那里有一些对你来说很有趣的东西。
    猜你喜欢
    • 2017-08-17
    • 1970-01-01
    • 2021-10-30
    • 2017-09-23
    • 2018-10-12
    • 2014-11-05
    • 2023-04-02
    • 2019-02-10
    • 2018-09-21
    相关资源
    最近更新 更多