Сброс соединения при вызове disconnect () с использованием ftp java-инфраструктуры предпринятого - PullRequest
2 голосов
/ 28 мая 2010

У меня проблемы с отключением от ftp-сервера с использованием предприимчивой среды Java ftp.

Я просто не могу вызвать disnect () для объекта FileTransferClient без получения ошибки.

Я ничего не делаю, кроме подключения к серверу, а затем отключения:

        // create client
        log.info("Creating FTP client");
        ftp = new FileTransferClient();

        // set remote host
        log.info("Setting remote host");
        ftp.setRemoteHost(host);
        ftp.setUserName(username);
        ftp.setPassword(password);

        // connect to the server
        log.info("Connecting to server " + host);
        ftp.connect();
        log.info("Connected and logged in to server " + host);

        // Shut down client
        log.info("Quitting client");
        ftp.disconnect();

        log.info("Example complete");

При запуске этого журнала читается:

INFO [test] 28 maj 2010 16:57:20.216 : Creating FTP client
INFO [test] 28 maj 2010 16:57:20.263 : Setting remote host
INFO [test] 28 maj 2010 16:57:20.263 : Connecting to server x
INFO [test] 28 maj 2010 16:57:20.979 : Connected and logged in to server x
INFO [test] 28 maj 2010 16:57:20.979 : Quitting client
ERROR [FTPControlSocket] 28 maj 2010 16:57:21.026 : Read failed ('' read so far)

И трассировка стека:

com.enterprisedt.net.ftp.ControlChannelIOException: Connection reset
at com.enterprisedt.net.ftp.FTPControlSocket.readLine(FTPControlSocket.java:1029)
at com.enterprisedt.net.ftp.FTPControlSocket.readReply(FTPControlSocket.java:1089)
at com.enterprisedt.net.ftp.FTPControlSocket.sendCommand(FTPControlSocket.java:988)
at com.enterprisedt.net.ftp.FTPClient.quit(FTPClient.java:4044)
at com.enterprisedt.net.ftp.FileTransferClient.disconnect(FileTransferClient.java:1034)
at test.main(test.java:46)

Следует отметить, что я без проблем могу подключаться и выполнять какие-то действия с сервером, например, получать список файлов в текущем рабочем каталоге. Но я не могу по какой-то причине отключиться! Я пытался использовать как активный, так и пассивный режим.

Приведенный выше пример, кстати, скопирован / вставлен из собственного примера. Я не могу найти НИЧЕГО связанного с этим, выполнив поиск в Google, поэтому я надеялся, что у вас есть какие-либо предложения или опыт по этому вопросу.

1 Ответ

0 голосов
/ 28 мая 2010

Попробуйте включить трассировки с помощью

com.enterprisedt.util.debug.Logger.setLevel(com.enterprisedt.util.debug.Level.DEBUG);

Это позволит вам наблюдать за связью между библиотекой и сервером ftp.

Попробуйте открыть соединение с сервером ftp с помощью клиента командной строки. Подключитесь, авторизуйтесь, убедитесь, что все работает. Затем введите quot quit. Это отправляет явную команду quit на FTP-сервер. Вы должны получить либо 221, либо 226 ответ. Если вы получили какой-либо другой код или соединение просто закрыто, значит, вы работаете с несовместимым FTP-сервером.

Если это так, вы также можете попробовать использовать disconnect(true), поскольку он просто закрывает соединения, а не пытается корректно завершить работу.

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