# Verständnisfrage zu den Streams



## Mikrowelle (7. Feb 2013)

Ist der output Stream vom Server der input Stream des Clienten ? 
Ist der input Stream des Server der output Stream des Clienten ?

Oder

Hat der Server einen in und output Stream sowie der Client seine eigene. So das die nichts mit einander zu tun haben ?

Ich möchte mir das gern Bildlich vorstellen, auf der linken Seite ist der Server und rechts ist der Client.

Wären die Streams Linien, müsste  ich jetzt  nur zwei Linien zeichnen oder 4 ?


----------



## Marcinek (7. Feb 2013)

2 Linen, 

aber es sind 4 Streams ^^

Der eine Schreibt auf einen Datenkanal (OutputStream) der andere liest auf dem Datenkanal (InputStream)


----------



## Timothy Truckle (7. Feb 2013)

Mikrowelle hat gesagt.:


> Ich möchte mir das gern Bildlich vorstellen, auf der linken Seite ist der Server und rechts ist der Client.
> 
> Wären die Streams Linien, müsste  ich jetzt  nur zwei Linien zeichnen oder 4 ?


2 Linien.
Betrachte die Streams als Stecker an einem unidirektionalen Kabel: InputStreams die "Pappa"- und OutputStreams die "Mamma"-Stecker

bye
TT


----------



## Mikrowelle (7. Feb 2013)

Ich habe eben über so einen Kabel gelesen das würde aber beudeten das es zwei linien sind die Aussage

Ist der output Stream vom Server der input Stream des Clienten ?
Ist der input Stream des Server der output Stream des Clienten ?

Aber trotzdem Falsch ist oder ?


----------



## Timothy Truckle (7. Feb 2013)

Mikrowelle hat gesagt.:


> Ist der output Stream vom Server der input Stream des Clienten ?
> Ist der input Stream des Server der output Stream des Clienten ?
> 
> Aber trotzdem Falsch ist oder ?


Die Aussage ist richtig.
Was der Eine ausgibt ist die Eingabe für den Anderen. Wie sollte es auch anders sein?

bye
TT


----------



## SlaterB (7. Feb 2013)

es gibt verschiedene Betrachtungsebenen, ganz grob ist es eine richtige Aussage, je zwei Dinge gehören zusammen,

aber wenn sich zwei Menschen über Kreuz beide Hände geben, dann gilt ja strenggenommen auch nicht:
die linke Hand von A IST GLEICH die linke Hand von B,
es sind schon unterschiedliche Dinge, die verknüpft sind


----------



## tröööt (7. Feb 2013)

um es vielleicht mal bildlich darzustellen

```
ServerInputStream<----<ClientOutputStream
ServerOutputStream>---->ClientInputStream
```
wobei es eher ist wie Slater sagte : ServerInputStream ist nicht gleich ServerOutputStream ... sondern es sind zwei eigenständige dinge die mit ein ander verknüpft sind ...

rein logisch stimmt es aber : was man im client in den output schreibt kann man auf dem server im input lesen und vice-versa


----------



## HBerger (23. Sep 2013)

Sorry, ich komm aus der C/C++ Welt  
Ich weiss nicht wie es in der Java Welt laeuft. 

Aber mit der beschriebenen Betrachtungsweisse wirst in der Netwerk-Programmierung nicht weiter kommen. 



> Betrachte die Streams als Stecker an einem unidirektionalen Kabel: InputStreams die "Pappa"- und OutputStreams die "Mamma"-Stecker


unidirektional iss ja noch ok  es gehen eh nur 2 richtungen (bidirektional) 
Aber die Endpunkte sind definitiv keine "Streams" 
Für die Endpunkte gibts andere Abstrakte Begriffe. IODevices, Sockets ... etc 
Im speziellen falle versuchst du grad nen "Socket" zu erklären. 



> 2 Linen,
> aber es sind 4 Streams ^^


1 biderektionale Line (oder 2 linien) sind ok. 
2 Sockets ! 
und beliebig viele Streams 

Was sind nun Streams ? 
Streams sind nichts was ein reales Objects beschreibt. Also kein Endpunkt, keine Linie, keine Verbindung. 
Streams bezeichnen eher eine Tätigkeit. das lesen und schreiben von daten (rohdaten oder text) ohne manipulation von positionen, einfach nur der reihe nach. 
DIe Abstraction des Vorgangs ist der Stream. 
Ziele von Streams muessen nicht nur Netzwerk verbindungen sein, sondern es gehen alle streamfaehige Devices ... 
- Dateien
- Konsole 
- Puffer (byte-Arrays im speicher). 

und ein so ein Ziel (device) kann mehrere Streams bedienen. 
wobei parallel mit mehreren streams auf einmal schreiben eher sinnfrei ist, kann aber parelleles lesen von daten manchmal sinnvoll sein ... 

Streams gibts als Input, Output und als Input/Output Stream (IStream, OStream, IOStream).  Also mit einem Stream auf einem socket z.b. koennte man lesen und gleichzeitig mit dem selben Stream schreiben. 
Also ein endpunkt == 2 Streams ist definitiv nicht zwingend  

Ich denk in Java ist das ähnlich  DIe konzepte werden sich nicht so ändern ... 

Also sieh ein Stream in Java als Abstraktes Object an, wo man Daten(binaer oder Text) in Reihenfolge reinschreiben, bzw rauslesen kann. Was (im Hintergrund) immer mit nem "Device(Gerät)" verbunden ist. 
In C/C++ musst die verbindungen fast immer selber zusammenbauen, denk in Java geht da halt vieles automatisch ??? 

Ciao ...


----------

