![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Senior Member
![]() Registriert seit: 05.08.2005
Beiträge: 181
|
![]() 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 |
![]() |
![]() |
![]() |
#2 | ||
Inventar
![]() |
![]() Zitat:
Zitat:
pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
||
![]() |
![]() |
![]() |
#3 |
Senior Member
![]() Registriert seit: 05.08.2005
Beiträge: 181
|
![]() 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 |
![]() |
![]() |
![]() |
#4 |
Elite
![]() |
![]() 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. |
![]() |
![]() |
![]() |
#5 |
Senior Member
![]() Registriert seit: 05.08.2005
Beiträge: 181
|
![]() Hallo who-t!
Danke für deinen entscheidenden Tipp! Problem gelöst. <closed> mfg, sesselhocker |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|