Verbindung zu einem FTP-Server in Java herstellen

In diesem Artikel werden Java-Codebeispiele implementiert, die zeigen, wie Sie sich mit dem Apache Commons Net mit einem FTP-Server verbinden und identifizieren. Stellen Sie sicher, dass die commons-net.jar Datei im Klassenpfad Ihres Projekts vorhanden ist.

Der net.ftp.FTPClient bietet die notwendige Grundlage für die Interaktion mit dem Server über das FTP-Protokoll. Um eine Verbindung zum Server herzustellen, verwenden Sie diese Methode:

void connect(String server, int port): Der Server kann mit dem Hostnamen oder der IP-Adresse festgelegt werden, und der Port ist eine Nummer, die verwendet wird, um eingehende Verbindungen für eine bestimmte Anwendung zu überwachen. FTP verwendet Port 21.

Verwenden Sie nach dem Herstellen der Verbindung diese Methode, um sich zu identifizieren:

boolean login(String username, String password): Diese Methode gibt true wenn die Identifizierung erfolgreich war, sonst false.

Eine Antwort vom FTP-Server muss nach dem Aufruf der Methode connect():

int responseFTP = clientFTP.getReplyCode(); 
if (!reponseFTP.isPositiveCompletion(replyCode)) {
// Der Vorgang ist fehlgeschlagen. Der Server verweigert
//die Verbindung oder lehnt den
Rückgabevorgang ab;
}
Nach jedem Methodenaufruf gibt der Server Nachrichten zurück. Die folgende Methode zeigt Meldungen vom Server an:

private static void serverresponse(FTPClient ftpClient) {
String[] responses = ftpClient.getReplyStrings();
if (Antworten != null & & answers.length > 0) {
for (String-Antwort: Antworten) {
System.out.println("SERVER: " + Antwort);
}
}
}
Hier ist der vollständige Code, der die Anmeldung, Identifizierung und Verifizierung umfasst:

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 (Antworten != null & & answers.length > 0) {
for (String-Antwort: Antworten) {
System.out.println("SERVER: " + Antwort);
}
}
}

public static void main(String[] args) {
String server = "serveraddress";
int port = 21;
Zeichenkette Benutzername = "Benutzername";
Zeichenkette password = "password";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
serverresponse(ftpClient);
int Antwort = ftpClient.getReplyCode();
if (! FTPReply.isPositiveCompletion(response)) {
System.out.println("Vorgang fehlgeschlagen. Server-Antwort: " + Antwort);
Rückkehr;
}
boolescher Status = ftpClient.login(Benutzername, Passwort);
serverresponse(ftpClient);
if (!state) {
System.out.println("Zugriff auf den Server nicht möglich");
Rückkehr;
} else {
System.out.println("Identifizierung erfolgreich");
}
} catch (IOException ex) {
System.out.println("Ein Fehler während der Verbindung wurde erkannt");
z.B. printStackTrace();
}
}
}
Kompilierung und Ausführung:

SERVER: 220---------- Willkommen bei Pure-FTPd [privsep] ----------
SERVER: 220-Sie sind Benutzer Nummer 31 von 500 erlaubt.
SERVER: 220-Ortszeit ist jetzt 06:02. Server-Port: 21.
SERVER: 220-Dies ist ein privates System - Keine anonyme Anmeldung
SERVER: 220 Nach 3 Minuten Inaktivität wird die Verbindung getrennt.
SERVER: 230-OK. Das aktuelle eingeschränkte Verzeichnis ist /
SERVER: 230-100 verwendete Dateien (1%) - autorisiert: 10000 Dateien
SERVER: 230 5217 Kbytes verwendet (0%) - autorisiert: 1536000 Kb
Erfolgreiche Identifizierung