Seite 1 von 1

Bufferstream bei POST

Verfasst: 21. Apr 2008 17:07
von plane
Versuche mich gerade an der "POST" Aufgabe, und habe folgendes Problem;

im Bufferreader stehen ja erst alle Informationen vom Header...danach gibt es \r\n\r\n und danach steht der body Text, in dem sich der Inhalt des gesendeten Post befindet also in unserem Beispiel der clienttext = Hallo.

Wenn ich die while-Schleife mit readLine() drüberlaufen lasse gibt es hier einen Hänger, da an Ende nach clientext = Hallo das \r\n fehlt. Und wir somit diese Zeile nicht einlesen können. Klappt das bei euch?

Oder mache ich was falsch... :shock:

Re: Bufferstream bei POST

Verfasst: 21. Apr 2008 19:29
von mehlvogel
Disclaimer: Ich bin kein aktueller Teilnehmer des Praktikums.

readLine() terminiert nicht, weil es eben genau auf das Zeilenende wartet, welches es nicht bekommt. Die Reader haben allerdings auch eine normale read() Methode mit der man eine bestimmte Anzahl von Bytes lesen kann.

Re: Bufferstream bei POST

Verfasst: 21. Apr 2008 20:23
von plane
Ja mit read bekomm ich den einzelnen byte den ich dann zu char konvertiere, das ist allerdings nur die notlösung und kann so auf gar keinen fall gewollt sein...
ich verstehe nicht, warum kein umbruch mitgesendet wird am ende nach dem body content...

Re: Bufferstream bei POST

Verfasst: 21. Apr 2008 20:48
von foo
plane hat geschrieben:Ja mit read bekomm ich den einzelnen byte den ich dann zu char konvertiere, das ist allerdings nur die notlösung und kann so auf gar keinen fall gewollt sein...
ich verstehe nicht, warum kein umbruch mitgesendet wird am ende nach dem body content...
http://www.rfc.net/rfc2616.html

Re: Bufferstream bei POST

Verfasst: 22. Apr 2008 18:14
von BlackHawk
Hallo!

Der BufferedReader kann nur Text lesen. Deshalb sollen
wir DataInputStream.read() zum Einlesen von Bytes verwenden.

(DataInputStream.readline() funktioniert nicht richtig und
sollen wir unter keinen Umständen verwenden -> siehe ppt-Präsentation)

Dennoch wirst du auch bei DataInputStream.read() das Problem haben, dass die
Operation blockiert, nachdem alle body-Bytes eingelesen sind.
Da hilft dir aber eine Methode der DataInputStream-Klasse weiter, die sie
von der Klasse FilterInputStream erbt...

Viele Grüße
BlackHawk

Re: Bufferstream bei POST

Verfasst: 22. Apr 2008 18:53
von Xaero
Müssen wir bei der Abgabe Test-Cases schreiben? Also wir haben es bis jetzt mit debugger und firefox getestet

Und eine andere Frage: Wie beende ich denn ein Server?

Re: Bufferstream bei POST

Verfasst: 23. Apr 2008 09:38
von SM
plane hat geschrieben: ich verstehe nicht, warum kein umbruch mitgesendet wird am ende nach dem body content...
Weil ein Zeilenumbruch am Ende fehl am Platz wäre. Was ist, wenn die gesendeten Daten keinen Text enthalten, sondern zB einen Dateiupload? Dann kann es passieren, dass mitten in der Datei die Bytefolge kommt, die in chars einem \r\n entspricht und Du würdest mitten in der Datei das Ende vermuten.

Ein Tipp meinerseits für Wagemutige: Wie wär's denn mal zu gucken, was der Client so an Informationen an den Server sendet? ;)