Java Commons-net FTPClient获取“读取超时”并在连接时挂起

时间:2018-10-03 12:47:47

标签: java ftp-client apache-commons-net

我有一个Java应用程序,该应用程序连接到另一台运行Filezilla FTP服务器的计算机。我注意到,经过一定数量的连接后,如果我关闭并尝试重新打开FTP客户端应用程序,我会开始挂在连接部分。我看到一个异常,显示“读取超时”,特别是指向ftpClient.setFileType(FTP.BINARY_FILE_TYPE);。当我注释掉该行时,它在下一行尝试通过FTP连接执行任何操作时失败,并显示相同的“ java.net.SocketTimeoutException:读取超时”。碰巧是ftpClient.makeDirectory()。

此后的任何通信功能只会向左和向右引发异常。

当我重新启动Filezilla服务器时,一切正常工作一段时间,直到问题再次出现。直到我重新启动服务器后,这种情况才会发生。

   FTPClient ftpClient = null;
   public boolean connect()
    {
        Connection conn = FileTransferUtility.conn;
    if (conn != null)
    {
        try
        {              
        ftpClient.connect(conn.getServer(),conn.getPort());
            ftpClient.login(conn.getUser(), conn.getPw());
            ftpClient.enterLocalPassiveMode();
            ftpClient.setSoTimeout(5000);
            ftpClient.setBufferSize(1024 * 1024);
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }

        return true;
    }
    else
    {
        return false;
    }
}

0 个答案:

没有答案