2013-03-27 67 views
0

我試圖在FTP上設置超時連接使用com.enterprisedt.net.ftp.FTPClient但由於某種原因無法讓它工作。設置在Java連接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秒的時間。有沒有辦法改變這個?

感謝,

回答

0

的setTimeout的方法記錄爲:

Set the SO_TIMEOUT in milliseconds on the underlying socket. 

通過這種方式,不僅影響了低水平的套接字操作。問題是 - 你期望發生什麼樣的超時?

On connect?在轉移?閒置?

如果您連接到例如一個未知的主機,你甚至會考慮超時之前的大部分時間都會進行DNS查找。

+0

基本上,用戶按下「測試連接」按鈕,並且在嘗試連接時20秒沒有任何事情發生。我想在幾秒鐘內得到答覆。如果它在這段時間內沒有響應,那麼就會失敗。 – maloney 2013-03-27 10:43:03