Hallo,
Ich bin gerade dabei, einen kleinen FTP Client zu programmieren. Nun hab ich ein Problem.
Ich verbinde mich per Socket zum FTP Server. Im Hintergrund läuft ein Thread der mir die Meldungen vom FTP Server ausgeben soll. Das macht er auch, aber nur bis zur Welcome Message. Danach ist Schluss. Das heißt, ich bekomme nicht mit, ob der User/ das Passwort korrekt waren, und auch keine anderen Befehle, eben nichts mehr. Hier mal die wichtigsten Teile:
Der Thread:
Mein FTP Client:
Ich bin gerade dabei, einen kleinen FTP Client zu programmieren. Nun hab ich ein Problem.
Ich verbinde mich per Socket zum FTP Server. Im Hintergrund läuft ein Thread der mir die Meldungen vom FTP Server ausgeben soll. Das macht er auch, aber nur bis zur Welcome Message. Danach ist Schluss. Das heißt, ich bekomme nicht mit, ob der User/ das Passwort korrekt waren, und auch keine anderen Befehle, eben nichts mehr. Hier mal die wichtigsten Teile:
Der Thread:
Java:
public class MyInputThread implements Runnable {
private Socket socket;
private BufferedReader br;
private int port;
private String server;
public MyInputThread(String server, int port){
this.server = server;
this.port=port;
}
public void run() {
try {
socket = new Socket(server, port);
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
System.out.println("Port "+port+": "+br.readLine());
}
} catch (UnknownHostException ex) {
Logger.getLogger(MyInputThread.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MyInputThread.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Mein FTP Client:
Java:
public class MyFtpClient {
private String host;
private String user;
private String pass;
private Socket socket;
private BufferedWriter bw;
public MyFtpClient(String host, String user, String pass) {
this.host = host;
this.user = user;
this.pass = pass;
}
public void connectFtp() throws UnknownHostException, IOException {
socket = new Socket(host, 21);
if (socket.isConnected()) {
login();
}
}
private void login() throws IOException {
sendCmd("USER " + user);
sendCmd("PASS " + pass);
}
public void sendCmd(String cmd) throws IOException {
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(cmd + "");
bw.flush();
}
public void disconnect(){
try {
sendCmd("QUIT");
socket.close();
System.out.println("Verbindung getrennt!");
} catch (Exception ex) {
System.out.println(ex);
}
}
}