# InputStream (Socket) mit BufferedInputStream puffern



## Dandro (4. Aug 2007)

Nabend,

ich stehe gerade vor einem kleinen Problem. Ich möchte gerne die ankommenden Daten eines InputStreams zu puffern, da ich gerne Pakete schnüren möchte ... Da aber nicht immer alle Paketdaten zum selben Zeitpunkt ankommen, möchte ich natürlich erstmal die Daten puffern, damit ich feststellen kann OB ein Paket schon vollständig ist, und wenn ja es nach und nach einlesen. Aber irgendwie wird bei jeder "read" operation der Puffer vom BufferedInputStream neu gefüllt, sprich die alten Daten verworfen? Kann das sein? Wie wirke ich dem entgegen?


----------



## Murray (5. Aug 2007)

Wenn du wissen willst, wieviele Daten schon angekommen sind und gelesen werden _könnten_, dann ist InputStream#available dein Freund.


----------



## Dandro (7. Aug 2007)

ja klar, soweit bin ich auch schon  Das Problem war, dass ich schaun musste ob schon genügend Daten im Stream liegen um ein Packet zu bilden. Jetzt kommt der Knackpunkt, die ersten beiden Bytes eines Packets geben die Size des zu lesenden Packets an, dass heißt ich müsste die ersten beiden Bytes "lesen" aber ohne sie aus dem Stream zu entfernen, und dann nochmal per available fragen ob schon "size" bytes im Stream liegen.

Nunja, habe mir nun selbst eine Klasse gebastelt welche das Puffern so übernimmt, wie ich es gerne hätte. Denn BufferedInputStream puffert die Daten nur temporär um einen Geschwindidkeitsvorteil zu erzielen. Trotzdem danke


----------

