0

我正在尝试使用 com.enterprisedt.net.ftp.FTPClient 在 FTP连接上设置超时,但由于某种原因无法使其正常工作。

这是我的代码:

public boolean testFtpDetails(String path) {
    boolean success = false;
    try {
        FTPClient ftp = new FTPClient();
        ftp.setRemoteHost("210.160.1.100");
        ftp.setTimeout(3000);
        ftp.connect();

        ftp.login("test", "test");

        success = ftp.connected();

        if (success && path != null) {
            ftp.chdir(path);
        }

        ftp.quit();

    } catch (UnknownHostException e) {            
    } catch (IOException e) {            
    } catch (FTPException e) {
}

因此,在尝试执行 ftp.connect() 3 秒后,我希望它会超时。但是,这不会发生,超时大约需要 15 秒。有没有办法改变这个?

谢谢,

4

1 回答 1

0

setTimeout 方法记录为:

Set the SO_TIMEOUT in milliseconds on the underlying socket.

这样,它只影响低级别的套接字操作。问题是——你期望发生什么样的超时?

在连接?转会期间?闲置?

如果您连接到例如未知主机,您还将在大部分时间甚至考虑超时之前进行 DNS 查找。

于 2013-03-27T09:57:19.330 回答