Java - сброс соединения по пиру: ошибка записи в сокет - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь реализовать базовый c FTP-клиент, используя Java Spring Boot, и я столкнулся с этой проблемой, и я хотел спросить вас, есть ли у вас какой-либо опыт работы с ним.

Я включил сервер Tomcat и перевел компьютер в спящий режим, примерно через 3 часа я разбудил P C, а сервер все еще работал, поэтому я попытался вызвать конечную точку (эта конечная точка должна проверьте соединение и затем загрузите файл на FTP-сервер), но я получаю следующее сообщение об исключении:

Сброс соединения по пиру: ошибка записи в сокет

Как вы думаете, это было вызвано тем, что P C спал в течение длительного времени, и он потерял связь, или это должно быть что-то еще? Если да, как мне справиться с этим делом?

Когда я перезагружаю сервер, файл загружается нормально.

Вот мой класс конечной точки:

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        try {
            FTPClient ftpClient = Connection.getFtpClient();

            if (!Connection.isConnected()) { Connection.connect(); }

            ftpClient.changeWorkingDirectory("/AiDisk_a1/usb/");
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

            InputStream inputStream = new BufferedInputStream(file.getInputStream());
            ftpClient.storeFile(file.getOriginalFilename(), inputStream);

            return "Status: " + ftpClient.getReplyString();
        }
        catch (IOException ex) {
            System.out.println("Endpoint exception: " + ex.getMessage());
            return "Endpoint exception: " + ex.getMessage();
        }
    }

Спасибо за ваши советы.

1 Ответ

1 голос
/ 24 апреля 2020

Я думаю, вам нужно использовать logout() и disconnect().

logout() throws IOException

Выйти на FTP-сервер, отправив команду QUIT.

 } finally {
    ftp.logout();
    ftp.disconnect();
  }

Сначала необходимо подключиться подключиться к серверу, прежде чем что-либо делать, и, наконец, отключиться после того, как вы полностью закончили взаимодействие с сервером. FTPClient

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...