ftp连接超时异常

时间:2013-08-16 15:41:05

标签: java ftp apache-commons-net

我正在尝试连接到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)

1 个答案:

答案 0 :(得分:1)

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

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

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

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