Подключение к FTP-серверу на Java

В этой статье реализованы примеры Java-кода, показывающие, как подключиться и идентифицировать себя с FTP-сервером с помощью Apache Commons Net. Убедитесь, что файл commons-net.jar существует в classpath.

Файл net.ftp.FTPClient обеспечивает необходимую основу для взаимодействия с сервером по протоколу FTP. Для подключения к серверу используйте этот метод:

void connect(String server, int port): Сервер может быть установлен с помощью имени хоста или IP-адреса, а порт - это номер, который используется для прослушивания входящих соединений для данного приложения. FTP использует порт 21.

После подключения используйте этот метод, чтобы идентифицировать себя:

boolean login(String username, String password): этот метод возвращает true если идентификация прошла успешно, в противном случае false.

Ответ от FTP-сервера должен быть получен после вызова метода connect():

int responseFTP = clientFTP.getReplyCode(); 
if (!reponseFTP.isPositiveCompletion(replyCode)) {
// Операция не удалась. Сервер запрещает
//соединение или отклоняет операцию возврата
;
}
После каждого вызова метода сервер возвращает сообщения. Следующий метод выводит сообщения с сервера:

private static void serverresponse(FTPClient ftpClient) {
String[] responses = ftpClient.getReplyStrings();
if (answers != null & & Ответы.длина > 0) {
for (Строковый ответ: ответы) {
System.out.println("SERVER: " + response);
}
}
}
Вот полный код, который включает в себя вход в систему, идентификацию и проверку:

import java.io.IOException; 
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPConnectionLogin {

private static void serverresponse(FTPClient ftpClient) {
String[] responses = ftpClient.getReplyStrings();
if (answers != null & & Ответы.длина > 0) {
for (Строковый ответ: ответы) {
System.out.println("SERVER: " + response);
}
}
}

public static void main(String[] args) {
String server = "serveraddress";
int порт = 21;
String username = "username";
Строка password = "password";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
serverresponse(ftpClient);
int response = ftpClient.getReplyCode();
if (! FTPReply.isPositiveCompletion(response)) {
System.out.println("Операция не удалась. Ответ сервера: " + ответ);
возврат;
}
boolean status = ftpClient.login(имя пользователя, пароль);
serverresponse(ftpClient);
if (!state) {
System.out.println("Невозможно получить доступ к серверу");
возврат;
} else {
System.out.println("Идентификация прошла успешно");
}
} catch (IOException ex) {
System.out.println("Обнаружена ошибка при подключении");
например, printStackTrace();
}
}
}
Компиляция и выполнение:

SERVER: 220---------- Добро пожаловать в Pure-FTPd [privsep] ----------
SERVER: 220-Вы пользователь номер 31 из 500 разрешенных.
SERVER: 220-Местное время теперь 06:02. Порт сервера: 21.
SERVER: 220-Это частная система - Нет анонимного входа
SERVER: 220 Вы будете отключены через 3 минуты бездействия.
SERVER: 230-OK. Текущий каталог с ограниченным доступом: /
SERVER: 230-100 использованных файлов (1%) - authorized: 10000 files
SERVER: 230 5217 Kbytes used (0%) - authorized: 1536000 Kb
Successful identification