Programm hängt zwischendurch und wird nicht beendet

mrno

Erfahrenes Mitglied
Es soll eine verbindung zu einem ftp aufbauen. Der Code sieht wie folgt aus:
Code:
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.PrintStream;


public class Connect {
    Socket socket;
    DataInputStream in;
    PrintStream out;
    public Connect() {
        try{
        socket = new Socket("ftp.suse.de",21);
        in=new DataInputStream(socket.getInputStream());
        out=new PrintStream(socket.getOutputStream());
        out.println("USER anonymous");
        say();
        out.println("PASS anonym@anonym.de");
        say();
    } catch (UnknownHostException ex) {System.out.println("Host:"+ex);
    } catch (IOException ex) {System.out.println("s:"+ex);
    }
    }
    public void say(){
        String s = "1";
        try {
            while ((s = in.readLine()) != null) {
                System.out.println(s);
            }
            System.out.println("weiter");
        } catch (IOException ex) {System.out.println("ex1:"+ex);
        }
    }
    public static void main(String[] args) {
        Connect connect = new Connect();
    }
}

Er führt das programm bis zum ersten say() aus.
Die say()-Methode liefert er folgende Meldung aus:
220 "Welcome to the SuSE ftp server: Please login as user 'ftp'"
331 Please send your email address as a password.

Also durchläuft das programm 2 mal die while schleife.
Aber die Meldung System.out.println("weiter"); wird nicht mehr ausgegeben.
Das Programm läuft auch nicht weiter ab, es wird aber auch nicht beendet und kein catch() wird ausgeführt.
Was ist falsch an diesem Programm
Kann mir da einer helfen
 
Hab den grund gefunden readLine(); liefert nie den wert null. Dieser Befehl wartet auf eine neue Zeile solange bis eine neue Zeile geschickt wird. Solange er wartet hängt das programm an dieser Stelle
 
Zurück