2013-03-27 223 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