Не вошли в сообщение об ошибке при подключении к FTP-серверу - PullRequest
0 голосов
/ 20 декабря 2011

Я использую com.enterprisedt.net.ftp.FTPClient для входа в мой FTPSERVER

с помощью следующей команды ftpClient.login (USER_NAME, PASSWORD ());

использую com.enterprisedt.net.ftp.

Но иногда я получаю сообщение об ошибке "Not logged in".

FTP-сервер имеет доменное имя. но я вхожу только с именем пользователя и pwd и именем хоста в качестве имени DNS.

Примерно через 10, 15, 20 минут я получаю сообщение об ошибке "не вошел в систему".

Это происходит не всегда, также не в какой-то определенной схеме, но сразу после ошибки соединение успешно.

[INFO] [FTPPull: getFTPConnection] - Произошла ошибка при входе через FTP: не вошел в систему Хост xxx.yyy.in Используется порт 6370 [12] [2011-11-10 14:59:18 CET]

но следующее соединение прошло успешно

[ИНФОРМАЦИЯ] [FTPPull: getFTPConnection] - вход выполнен успешно [12] [2011-11-10 15:09:18 CET]

Пожалуйста, помогите, не знаю, почему иногда подключаетесь, а иногда не подключаетесь.

С уважением, Sridevi

1 Ответ

1 голос
/ 20 декабря 2011

Возможно, ваша проблема в том, что на уровне канала команд FTP есть тайм-аут.Когда ваш клиент обнаруживает его, он автоматически подключается, как вы засвидетельствовали.

Теперь вы должны понять, откуда исходит таймаут: либо на стороне клиента, либо на стороне сервера:

  • сначала проверьте конфигурацию на стороне сервера: можете ли вы изменить тайм-аут командного канала на более высокое значение или даже на бесконечное?
  • , а затем проверить API для вашего клиента (я лично использую FTP-клиент Apache Commons): есть ли способ установить время ожидания тоже?
  • наконец, проверьте в API, используют ли сокеты для канала команд TCP keepalive;если нет, есть ли у него метод для его установки?Если вы передаете Socket самому конструктору, сделайте его активным до создания своего клиентского экземпляра.

Однако наиболее вероятный сценарий заключается в том, что FTP-сервер сам закрывает командный канал.Изменение зависит от реализации.

Хороший способ проверить отключение на стороне сервера - использовать FTP-клиент командной строки для проверки.Я лично использую lftp для этого:

$ lftp ftp://some.ftp.site/
lftp> debug
# idle, idle...
# if the server times out, it will tell you so
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...