Hallo zusammen.
Ich möchte mit der apache commons library eine Verbindung zu einem FTP-Server herstellen und ein Verzeichnis auslesen (und später auch dateien hoch und ruterladen, ist abr noch nicht implementiert.) Ich habe dazu folgende Klasse geschrieben:
Ich hab im wesentlichen die Implementierung aus dem überall zu findendem Beispiel übernommen. Ich bekomme jedoch immer nur die Fehlermeldung
An meinem FTP-Server liegt es nicht. Ich hab schon mehrere FTP-Server durchprobiert.
Wie kann ich da vorgehen? hat jemand eine Idee woran das liegen könnte?
Ich möchte mit der apache commons library eine Verbindung zu einem FTP-Server herstellen und ein Verzeichnis auslesen (und später auch dateien hoch und ruterladen, ist abr noch nicht implementiert.) Ich habe dazu folgende Klasse geschrieben:
Java:
import org.apache.commons.net.ftp.*;
import java.io.*;
public class FTPControl
{
private FTPClient ftp;
private String server, username, password;
private boolean error;
/**
* Constructor for objects of class FTPControl
*/
public FTPControl(String server, String username, String password)
{
ftp = new FTPClient();
error = false;
connect();
}
private void connect()
{
//Verbindung herstellen
try
{
int reply;
ftp.connect(server);
System.out.println("Connected to " + server + ".");
// After connection attempt, you should check the reply code to verify
// success.
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
ftp.disconnect();
System.err.println("FTP server refused connection.");
}
}
catch (IOException e)
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException f)
{
}
}
System.err.println("Could not connect to server.");
e.printStackTrace();
System.exit(1);
}
//Einloggen
try
{
if (!ftp.login(username, password))
{
ftp.logout();
error = true;
}
System.out.println("Remote system is " + ftp.getSystemName());
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
if (ftp.isConnected())
{
MainManager.setStatus("Mit " + server + " verbunden.");
}
}
catch (FTPConnectionClosedException e)
{
error = true;
System.err.println("Server closed connection.");
e.printStackTrace();
}
catch (IOException e)
{
error = true;
e.printStackTrace();
}
finally
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException f)
{
}
}
}
}
public void disconnect()
{
try
{
ftp.logout();
ftp.disconnect();
}
catch (IOException e)
{
}
}
public void getFiles()
{
if(!ftp.isConnected())
{
connect();
}
try
{
FTPFile[] files = ftp.listFiles();
for(FTPFile f : files)
{
System.out.println(f.getName());
}
}
catch (IOException e)
{
System.out.println("Auslesen der Dateien Fehlgeschlagen");
e.printStackTrace();
}
}
}
Ich hab im wesentlichen die Implementierung aus dem überall zu findendem Beispiel übernommen. Ich bekomme jedoch immer nur die Fehlermeldung
Could not connect to server.
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:171)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:192)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:285)
at FTPControl.connect(FTPControl.java:37)
at FTPControl.<init>(FTPControl.java:28)
at __SHELL5$1.<init>(__SHELL5.java:10)
at __SHELL5.run(__SHELL5.java:5)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
An meinem FTP-Server liegt es nicht. Ich hab schon mehrere FTP-Server durchprobiert.
Wie kann ich da vorgehen? hat jemand eine Idee woran das liegen könnte?