Клиентская библиотека Java FTPs успешно подключается к серверу, но список каталогов пуст из-за ошибки на серверах FileZiJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Клиентская библиотека Java FTPs успешно подключается к серверу, но список каталогов пуст из-за ошибки на серверах FileZi

Сообщение Anonymous »

Я использую клиентскую библиотеку Java commons-net для подключения к FTP-серверам, я могу успешно подключаться к серверам. Тем не менее, при вызове «ftps.listDirectories()» я получаю «0» при подключении к серверам FileZilla с ошибками:
  • Ошибка при передаче данных: PROT C is не допускается, если управляющее соединение защищено. Используйте PROT P. -> Если не использовался ftps.execPROT(“P”);
  • Ошибка при передаче данных: сеанс TLS подключения к данным не возобновлен. ->  Если использовался ftps.execPROT(“P”);
Эта проблема возникает не со всеми FTP-серверами.
Я пытался создать FTP-сервер локально, но при попытке подключения заметил следующее:
  • Старая версия сервера FileZilla (v0.9.60) .0) может подключаться и может «ftps.listDirectories()», если флажок «заставить PROT шифровать передачу файлов при использовании FTP через TLS» не установлен.
  • Новая версия сервера FileZilla (v1.8.2) .0) только подключается, но не может «getListDirectories()», всегда пуст с ошибками, о которых я упоминал выше.
Обратите внимание, что я пробовал FileZilla версию клиента (v3.67.1), чтобы убедиться, что я могу без проблем подключаться к FTP-серверам и просматривать файлы/каталоги.
// Для подключения к FTP-серверам (но без проблем с связь вообще)
public FTPConnection(String host, String username, String password, boolean passive) throws IOException {
if (ftps) {
this.log = Logger.getLogger(host);
this.host = host;
this.clientFtps = new FTPSClient(false);
try {
this.clientFtps.connect(host);
} catch (Exception e) {
log.debug(e.getStackTrace());
}
if (username != null)
try {
if (pasv) {
this.clientFtps.enterLocalPassiveMode();
} else {
this.clientFtps.enterLocalActiveMode();
}
this.clientFtps.login(username, password);
//log.debug(this.clientFtps.getReplyString());
} catch (IOException ex) {
ex.printStackTrace();
}
this.clientFtps.setFileType(FTP.BINARY_FILE_TYPE);
this.clientFtps.setFileTransferMode(FTP.BINARY_FILE_TYPE);
log.debug("the type of ftp file is : " + FTP.BINARY_FILE_TYPE);
} else {
this.host = host;
this.log = Logger.getLogger("ftp://" + host);
log.debug("ftp://" + host);
this.client = new FTPClient();
this.client.connect(host);
if (username != null)
try {
this.client.login(username, password);
log.debug(this.client.getReplyString());
} catch (IOException ex) {
ex.printStackTrace();
}
this.client.setFileType(FTP.BINARY_FILE_TYPE);
this.client.setFileTransferMode(FTP.BINARY_FILE_TYPE);
log.debug("the type of ftp file is : " + FTP.BINARY_FILE_TYPE);
if (pasv)
this.client.enterLocalPassiveMode();
else
this.client.enterLocalActiveMode();
}
}

// Для просмотра файлов/каталогов (вот в чем проблема)
public String[] dirs() throws IOException {
if (ftps) {
FTPFile[] files = clientFtps.listDirectories();
if (files == null)
return new String[0];
String[] result = new String[files.length];
for (int i = 0; i < result.length; i++)
result = files.getName();
return result;
} else {
FTPFile[] files = client.listDirectories();
if (files == null)
return new String[0];
String[] result = new String[files.length];
for (int i = 0; i < result.length; i++)
result = files.getName();
return result;
}
}


Подробнее здесь: https://stackoverflow.com/questions/788 ... of-directo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»