【问题标题】:Upload file FTP server上传文件 FTP 服务器
【发布时间】:2013-05-13 07:53:23
【问题描述】:

我在通过 apache FTP 客户端连接到我的 ftp 服务器时卡住了。我发现了很多程序,但我无法通过以下代码连接到我的 ftp 服务器。

FTPClient ftpClient = new FTPClient();
 ftpClient.connect("169.144.76.33");
 ftpClient.login("root", "re123set");

Exception:

java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
    at java.net.Socket.connect(Socket.java:546)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:268)

但是每当我尝试通过带有 ip、用户名、密码、端口的文件 zilla 连接时(没有端口无法连接)。我可以连接到 ftp 服务器了。

所以请帮我解决这个问题..

【问题讨论】:

  • 您的防火墙是否可能阻止您? (也许 FileZilla 已被允许通过防火墙)。
  • 嗨,我需要在 ftpclient 中输入我的端口

标签: java ftp sftp


【解决方案1】:

从你需要在 Filezilla 中输入一个端口(默认为 FTP 端口21)的事实来看,我假设你没有向FTPClient 提供一些信息:

1) 端口号(假设它不同于默认的21)。要连接到非默认端口,请使用带有两个参数的 Connect 重载:

public void connect(String hostname, int port)

2) 您可能正在使用隐式 SSL/TLS 加密,FileZilla(但不是 FTPClient)可以从端口号 990 假设什么

3)您实际上想要使用 SFTP(基于您的问题的 sftp 标签)。 FTPClient 不支持 SFTP 协议,它与 FTP 完全不同。见How to retrieve a file from a server via SFTP?

【讨论】:

  • 在 FileZilla 中,我使用端口 22 连接到 ftp 服务器。 FTPClient如何设置端口号?
  • 查看我的更新答案。如果有帮助,请不要忘记接受答案:)
  • 忽略我之前的评论。虽然事实上是正确的,但这里的重点是22 是 SFTP 端口。所以请看我的回答 3)。
  • 我的整个需求突然发生了变化。请看我的问题
  • 请针对您的新要求开始一个新问题。 (我已请求恢复您问题的先前版本)