【问题标题】:ftp Connection timed out exceptionftp 连接超时异常
【发布时间】:2013-08-16 15:41:04
【问题描述】:

我正在尝试连接到 FTP 站点并上传/下载文件。我能够通过浏览器和 FileZilla 进行连接。所以我确信它有效。但是当我尝试通过我的 java 程序访问它时,我得到了这个异常。请任何帮助将不胜感激。
我的 Java 类(构造函数)

public TriFtpClient() {
    tri = new FTPClient();
    String host = InkAndTonerProperties.getSingleton().getProperty(
            "ftpDomain");
    int reply;
    try {
        tri.addProtocolCommandListener(new PrintCommandListener(
                new PrintWriter(System.out), true));
        tri.connect(host, 21);
        log.debug("default port = " + tri.getDefaultPort());
        reply = tri.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            tri.disconnect();
            log.error("Exception in connecting to FTP Server");
        }
        tri.login(
                InkAndTonerProperties.getSingleton().getProperty(
                        "ftpUserId"), InkAndTonerProperties.getSingleton()
                        .getProperty("ftpPassword"));
        tri.enterLocalPassiveMode();
    } catch (IOException e) {
        if (tri.isConnected()) {
            log.error("it is connected.");
            try {
                tri.disconnect();
            } catch (IOException f) {
                // do nothing
            }
        }
        log.error("Failed to connect and login", e);
    }
}

//上传方法
// 下载方法

堆栈跟踪

java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)

【问题讨论】:

  • 我的代码在到达 tr.connect() 时失败。无法建立连接。

标签: java ftp apache-commons-net


【解决方案1】:

启用 FTPClient 的调试日志并检查进入被动模式时是否发生超时。 大多数情况下,进入被动模式时会发生连接超时。

如果此时连接超时,请检查以下日志中的 IP:

Entering Passive Mode (xxx,xxx,xxx,xxx,xxx,xxx)

如果第一个块以 10 或 172 或 192 开头,则服务器在进入被动模式时要求使用私有 IP 进行连接。您必须更改服务器端的被动地址才能使用公共 IP 地址

【讨论】:

  • 创建连接时会发生超时,但进入被动模式时不会。我还不能到达那里。
  • 那么问题将是其他问题。您可以检查以下内容。检查您是否尝试使用域名或 IP 进行连接(通常在这种情况下,它会引发 Unknon 主机异常。不是超时)。如果使用域名,请更改为 IP 并尝试。检查您的浏览器中是否配置了任何代理。
  • 感谢 Prem 的输入,我遇到了防火墙问题。还在想办法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 2012-02-23
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
相关资源
最近更新 更多