WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 02.05.2007, 22:10   #1
sesselhocker
Senior Member
 
Registriert seit: 05.08.2005
Beiträge: 181


Standard Java: FTP-Client

Hallo!

Habe folgenden Code:

boolean open(String host, String user, String pass) throws Exception
{
sock = new Socket(host, 21, null, 80);
in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
System.out.println(in.readLine());
write("USER "+user);
System.out.println(in.readLine());
write("PASS "+pass);
System.out.println(in.readLine());

void write(String string) throws Exception
{
out.write(string+"\r\n");
out.flush();
}

Das Problem ist, dass ich nicht weiß, wie viele Zeilen ich am Beginn vom Server auslesen kann, ohne dass sich das Programm aufhängt. Ein Beispiel: Die Willkommensnachricht ist 3 Zeilen lang. Am Anfang wird die erste Zeile ausgegeben, nach dem Senden des Benutzernamens die 2. Zeile und nach dem Passwort die 3. Ich möchte aber auch auf die Messages vom Server reagieren können, beispielsweise um festzustellen, ob der Login erfolgreich war. Wie stelle ich also fest, ob ich noch etwas auslesen kann/darf/muss?

Vielen Dank schon mal,
mfg sesselhocker
sesselhocker ist offline   Mit Zitat antworten
Alt 03.05.2007, 06:27   #2
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

Zitat:
ohne dass sich das Programm aufhängt.
Wieso sollte es sich aufhängen? Um solche Gschichtln zu umgehen, legt man einen Timeout fest

Zitat:
Wie stelle ich also fest, ob ich noch etwas auslesen kann/darf/muss?
ähem anhand der Responsecodes? http://www.ietf.org/rfc/rfc959.txt

pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 03.05.2007, 09:26   #3
sesselhocker
Senior Member
 
Registriert seit: 05.08.2005
Beiträge: 181


Standard

Hallo pong!

Danke für deine rasche Antwort!

Das Programm hängt sich deswegen auf, da bei System.out.println(in.readLine()); solange gewartet wird, bis ich eine Nachricht vom Server bekomme. Und ich möchte für das Programm nicht wirklich ein Timout festlegen, da ja sonst das ganze Programm unterbrochen wird, und nicht nur weiter abgearbeitet wird.

Natürlich reagiere ich anhand der Response-Codes, allerdings kann ich nur darauf reagieren, wennn ich die aktuellste (letzte) Responsenachricht vom Server habe. Die habe ich aber wieder nur, wenn ich weiß, wie oft ich den Servercache auslesen darf, weil, wenn ich zu oft auslese, das Programm hängen bleibt, wie gerade gesagt.

Ich brauche also eine Lösung, mit der ich weiß, wie oft ich noch mit readLine() auslesen darf. Ich könnte das natürlich umständlich über einen Thread lösen, aber das muss doch einfacher gehen oder?

mfg sesselhocker
sesselhocker ist offline   Mit Zitat antworten
Alt 03.05.2007, 12:14   #4
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

AFAIK available() gibt dir die anzahl der verfuegbaren bytes bei einem InputStream. Wenns net ausreicht, kannst mittlerweile was anderes tun.
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 08.05.2007, 17:09   #5
sesselhocker
Senior Member
 
Registriert seit: 05.08.2005
Beiträge: 181


Standard

Hallo who-t!

Danke für deinen entscheidenden Tipp! Problem gelöst.

<closed>

mfg, sesselhocker
sesselhocker ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:17 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag