Verständnisfrage zu den Streams

Mikrowelle

Bekanntes Mitglied
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 ?
 
2 Linen,

aber es sind 4 Streams ^^

Der eine Schreibt auf einen Datenkanal (OutputStream) der andere liest auf dem Datenkanal (InputStream)
 
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 ?
 
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
 
um es vielleicht mal bildlich darzustellen
Code:
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
 
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 ...
 

Zurück
Oben