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 に答える