Stream zeilenweiße auslesen

mrno

Erfahrenes Mitglied
Hi,
ich öffne über eine socket-verbindung ein Stream zu einem ftp-Server. Mein Problem ist es, die meldung vom FTP zeilenweiße auszugeben.

Code:
Socket socket = new Socket("ftp.suse.de",21);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());

Wie kann ich jetzt die meldungen des Server Zeilenweiße auslesen
Folgender Code funktioniert nicht:

Code:
String s;
while((s=in.readLine())!= null){
System.out.println(s);
}

Grund: Wenn im Stream keine Zeile mehr vorhanden ist wartet das Programm solange ab bis der Server eine neue Zeile sendet. Solange hängt das Programm die while-Schleife wird nie beendet. in.readLine liefert nie null.
Gibt es eine möglichkeit die Anzahl der Zeilen auszulesen die der Stream enthält Hat jemand eine andere idee Brauche nacher nur das ergebnis des Streams in einem String damit ich es auswerden kann.
Kann mir da irgendjemand helfen
 
versuche folgendes:
String s;
try{
while(true) {
//lies den stream ein
s=inputStream.readLine();
System.out.println("Line: "+s);
}

}

catch(EOFException eof) {

}

//weitermachen

Hoffe das hilft und klappt, habs nicht getestet ;)

Gruss,

Torsten
 
Upsi,

hab gesehen du arbeitest ja gar nicht mit files und deren inputstream, sorry.

Hier noch eine möglichkeit:

schicke doch eine zeile, welche das ende des streams markiert sprich sowas wie:

<endofstream>

und benutz diese als end-markierung für die übertragung,
so weisst du wann nichts mehr kommt.

EDIT:
okay, man sollte den text auch ganz lesen. Ich würde erstens:
denn ankommenden stream in einem thread lauschen lassen, damit blockiert er dein programm nicht.
Zweitens: FTP ist ja ein protokoll, sprich es gibt ein standardisiertes kommunikations verfahren, such mal bei google. dass wird dir bestimmt helfen.


Gruss,

Torsten
 
Zuletzt bearbeitet:
Zurück