FTP SocketTimeoutException即使使用被动模式也是如此

时间:2011-09-23 12:53:34

标签: java ftp

我们在AIX上使用commons-net-1.4.1.jar和java5_64。我在FTP服务器上列出文件时遇到以下异常。

java.net.SocketTimeoutException: Accept timed out
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:427)
        at java.net.ServerSocket.implAccept(ServerSocket.java:466)
        at java.net.ServerSocket.accept(ServerSocket.java:434)
        at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:502)
        at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2488)

此错误是间歇性的,因为该过程每天运行大约60次,我得到错误2或3次,其余时间运行正常。

我在互联网上找到了一种可能的解决方案,可以将连接模式从主动改为被动,但这也无济于事。

你能帮助我吗,我不知道原因是什么。

2 个答案:

答案 0 :(得分:0)

您尝试列出文件的远程服务器根本就没有响应...(这是一种相当常见的情况)。此时他们的互联网连接已关闭,或者您自己的互联网连接已关闭,或服务器已饱和并拒绝连接,或任何可能的情况。

(每次进程成功时,您是否正确关闭与服务器的连接?服务器可能拒绝连接,因为它认为您已连接)

答案 1 :(得分:0)

如果连接中的所有内容都正确,即每台服务器的被动和ASCII,并且仍然出现套接字超时,则增加ftpClient.setTimeout(220)下的连接时间;