Java commons-net FTPClient получает «Тайм-аут чтения» и зависает при подключении - PullRequest
0 голосов
/ 03 октября 2018

У меня есть приложение Java, которое подключается к другому компьютеру, на котором работает FTP-сервер Filezilla.Я заметил, что после некоторого количества соединений, если я закрываю и пытаюсь снова открыть свое клиентское приложение FTP, я начинаю зависать на части соединения.Я вижу исключение, говорящее "Тайм-аут чтения", в частности указывающий на ftpClient.setFileType (FTP.BINARY_FILE_TYPE) ;.Когда я закомментирую эту строку, она просто завершается с тем же «java.net.SocketTimeoutException: Read timed out» на следующей строке, которая пытается что-то сделать с FTP-соединением.Это происходит с 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;
    }
}
...