# Stream de-multiplexen



## tuxedo (7. Sep 2007)

Servus,

ich hab den Fall, dass in einer Client-Server-Streaming-Anwendung, der Server dem Client viele Streams mit kontinuierlichen, zusammenhängenden Daten in Form eines einzigen Streams zur Verfügung stellt. 

D.h. der Server multiplexed die vielen Streams häppchenweise in einen einzigen Stream (hängt vor jedes Datenpaket noch eine Stream-ID, damit der Client die Datenpäckchen noch ausseinanderhalten kann).

So, der Client ließt also abwechselnd ID und Datenpäckchen aus seinem InputStream vom Socket.

Für die Weiterverarbeitung braucht der Client jedoch einen InputStream. Also irgendwas woraus er lesen kann und was "InputStream"-Kompatibel ist.

Meine Idee wäre jetzt eine Art Dummy-Stream der sowohl ein WRITE als auch ein READ beherrscht. So könnte ich die Datenpäckchen, die vom Socket gelesen wurden, und deren zuordnung anhand der ID möglich ist, in einen DUmmyStream pro gefundener ID reinschreiben und die Anwendung könnte diesen als "InputStream" behandeln und  rauslesen..


Meine Frage ist jetzt:

- Fällt jemand ne bessere Lösung ein? 
- Hat jemand Hinweise oder Tipps um das performant zu machen?
- Gibts vielleicht schon sowas wie einen DummyStream? Im Prinzip ist das ja nix anderes wie ein RingPuffer...

Gruß Alex


----------



## SlaterB (7. Sep 2007)

http://java.sun.com/javase/6/docs/api/java/io/PipedInputStream.html



> A piped input stream should be connected to a piped output stream; the piped input stream then provides whatever data bytes are written to the piped output stream.


----------



## tuxedo (7. Sep 2007)

Hey, das ist cool. Wenn ich's jetzt auf die schnelle verstanden habe:

Ich erzeuge einen PipedOutputStream und einen PipedInputStream. Letzteren "connecte" ich mit dem PipedOutputstream und schon hab ich meinen Buffer?

Coole Sache.

Danke.....


----------

