# Komischer Fehler Readline()



## Droppi (29. Jun 2012)

Hallo Leute,

vielleicht habe ich etwas falsch verstanden.
Bin bisher davon ausgegangen, dass die Methode readline() vom Bufferedreader serverseitig solange wartet, bis etwas vom Client gesendet wird.
Ich habe das Problem, dass wenn ich die in eine while Schleife packe, um nacheinander alle Aufrufe zu empfangen (in eigenem Thread), die ununterbrochen null liefert.
Wenn ich das ausgeben lassen, habe ich eine Endlosschleife mit Ausgabe null.

Wie lässt man den Server auf Eingaben warten? - das wird eig. so in Beispielen gezeigt.
Vermutlich kann es nichts damit zu tun haben, dass ich den Client in Javascript programmiere und lediglich ein Java Applet als "Verknüpfung" nutze?

Danke - tu da schon Stunden rum


----------



## Empire Phoenix (29. Jun 2012)

code der whileschleife plz


----------



## Droppi (29. Jun 2012)

Ahja... offenbar gibt readLine() null aus, sobald der Stream beendet ist.
Ich bin mir nicht sicher, was da passiert - vom Socket über Inputstreamreader bis hin zum Bufferedreader funktioniert eigentlich alles.
readLine() liest immer genau einen Befehl und liefert dann nur noch null.
Warum auch immer ?!

An der Schleife liegt es nicht - das liegt nur daran, dass readLine() einfach null liefert nach der ersten Übertragung, obwohl der Socket noch vorhanden ist.
Gibts da vielleicht bei Xampp einen Timeout für den Reader?

Ich kann den Quelltext leider nicht rein kopieren, weil sich die Software inzwischen auf 17 Klassen mit jeweils ca. 200 Zeilen Code erstreckt.


----------



## Tomate_Salat (29. Jun 2012)

Wir wollen nicht den kompletten Quelltext sondern nur die relevante Stelle (also die Schleife) ;-)

Wenn das nicht geht musst du warten, bis meine Glaskugel aus der Reparatur kommt (das teil überhitzt immer wieder).


----------



## Droppi (29. Jun 2012)

Naja... wie gesagt: Liegt vermutlich nicht an der Schleife, habe verschiedene aus dem Internet ausprobiert.

Offenbar passiert "Software caused connection abort", obwohl die Verbindung von mir nicht geschlossen wird.
Habe was von TCP Timeout gelesen... kann das daran liegen?

Glaskugeln gibts hier: Wahrsager Hellseher Glaskugel 100 mm: Amazon.de: Drogerie & Körperpflege

So sieht es momentan aus:

```
public void run(){
		while(true){
			if(this.nutzer.getvorhanden()==false){this.threadbeenden(); break;}
			this.ok = 0;
			this.reinkommendenachricht = null;
			this.befehlstuecke = null;
			try {
				this.reinkommendenachricht = this.rein1.readLine();
                                //Das müsste doch eigentlich dort oben warten, bis eine Eingabe kommt
				if(this.reinkommendenachricht == null){System.out.println("Der Dreck liefert nur noch null" + this.rein1.ready()); threadbeenden(); return;}
				for(int i=0;i<this.reinkommendenachricht.length();i++){
					if(this.reinkommendenachricht.charAt(i)=='|'){ this.ok = 1; break; }
				}
				if(this.ok==0){ throw new Exception();}
			}
			catch(Exception e){
				continue;
			}
			System.out.println("reinkommende Nachricht: " + this.reinkommendenachricht);
			this.befehlstuecke = this.zerlegen(this.reinkommendenachricht);


usw.........
```


----------



## Tomate_Salat (29. Jun 2012)

Prinzpiell: readLine liest nur eine Zeile. Normalerweise verwendet man den so:

```
while(reader.ready()) {
    doSomethingWithLine(reader.readLine());
}
```

Ja, ein timeout könnte durchaus eine Möglichkeit sein. Standardmäßig hält der Apache (gehe mal davon aus, da du was von xampp geschrieben hast) die Verbindung nicht ewig offen.


----------



## Michael... (29. Jun 2012)

Droppi hat gesagt.:


> Offenbar passiert "Software caused connection abort", obwohl die Verbindung von mir nicht geschlossen wird.
> Habe was von TCP Timeout gelesen... kann das daran liegen?


Sicher, dass auf der sendenden Seite der Stream nicht geschlossenen wird?


----------



## Droppi (29. Jun 2012)

eigentlisch schon... ich verwende ein Opensource Applet für diese Verbindung. Die wird lediglich aus Javascript gestartet.
Ich arbeite mich mal da durch und untersuche genau, wo das Problem entsteht..
ansonsten melde ich mich nochmal 

Übrigens vielen Dank! Das ist ja eine super Community, hier arbeiten alle zusammen - werde mich da vielleicht auch mal ein wenig beteiligen 
Macht ihr das alle hobbymäßig oder habt ihr Informatik studiert bzw. arbeitet in diesem Bereich?


----------

