inputstream teilen?

Status
Nicht offen für weitere Antworten.
A

alibali

Gast
hi, ich versuche mich gerade an einem kleinen client/server testprogramm, und wollte bei einem bestimmten kommando gerne ein objekt vom server zum client schicken.

der server schickt dem client bei einem bestimmten ereignis ein objekt, da es nur eine socketverbindung gibt, und die eigentliche kommunikation über einen BufferedReader und einen PrintWriter läuft, muss der server dem client ja vor dem objekt noch mitteilen "achtung hier kommt jetz ein objekt!", gefolgt von dem eigentlichen objekt.

und ich glaube da liegt das problem begraben.

server:

Code:
        out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), "latin1"), true);
        oout = new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream()));

kann ich einfach ein outputstream für zwei verschiedene zwecke verwenden? einmal einen normalen text ausgeben, gefolgt von einem objekt?
denn der client muss dann ja einen BufferedReader und einen ObjectInputStream auf denselben inputstream legen, was scheinbar nicht ganz funktioniert, denn der ObjectInputStream wartet vergeblich auf den header vom ObjectOutputStream...

client:

Code:
  in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  oin = new ObjectInputStream( new BufferedInputStream(socket.getInputStream()));

meine frage nun, wie kann ich das geschickt handlen, ohne einen zusätzlichen socket aufzumachen, geht immer nur eins von beidem und mein ansatz is total falsch?

ich hoffe ihr könnt mir helfen
danke
 

anfänger15

Bekanntes Mitglied
Meines Wissens kannst du die 2 Streams nicht gelichzeitig benutzen. Du musst also zuerst den text senden und dir dann nochmal einen outputStream holen in dem du das object sendest.

Bin mir aber auch nicht 100% sicher.
 
G

Guest

Gast
Doch man kann.
Man muss auf die Reihenfolge achten, mit der die Streams erzeugt werden.
Bei mir funzt folgendes Beispiel:

Serverseite:
Code:
this.din  = new DataInputStream(socket.geInutputStream());
this.oin = new ObjectInputStream(socket.getInutputStream());
      
this.dout = new DataOutputStream(socket.getOutputStream());
this.oout = new ObjectOutputStream(socket.getOutputStream());

Clientseite:
Code:
this.oout = new ObjectOutputStream(socket.getOutputStream());
this.dout = new DataOutputStream(socket.getOutputStream());

this.din  = new DataInputStream(socket.getInputStream());
this.oin = new ObjectInputStream(socket.getInputStream());

Allerdings funzt das (komischerweise) nicht wenn ich nen BufferedInput- bzw. Outputstream dazwischenschalte
 
T

tuxedo

Gast
Anonymous hat gesagt.:

Sicher?

Zwei mal den InputStream "erzeugen" mag vielleicht klappen. Aber was ist mit den Daten? Du kannst ja nicht am InputStream (1) 5 bytes daten auslesen, und später die gleichen Daten an InputStream(2) erwarten...


Einen Fluss (mit Wasser und so) kann man auch nicht duplizieren und an zwei Stellen ein und denselbenm Fisch aus dem Wasser fischen. Streams verfolgen eigentlich dieses Fluss-Prinzip.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
S Socket String InputStream in hex umwandeln Netzwerkprogrammierung 1
D GZIP InputStream lesen ohne zu encoden Netzwerkprogrammierung 1
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6
R Socket InputStream readObject > Connection Reset Netzwerkprogrammierung 3
windl InputStream cachen Netzwerkprogrammierung 3
K Socket InputStream wird nicht erzeugt Netzwerkprogrammierung 4
M Socket InputStream liest nicht vollständig Netzwerkprogrammierung 7
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
K Byte für Byte aus InputStream lesen Netzwerkprogrammierung 5
F JSch - inputstream is closed Netzwerkprogrammierung 13
M Socket InputStream sendet ausgaben von OutputStream zurück Netzwerkprogrammierung 2
D Inputstream to Outputstream Netzwerkprogrammierung 3
M InputStream and ObjectInputStream zur gleichen Zeit Netzwerkprogrammierung 11
T Inputstream -> verschiedene Objekte lesen Netzwerkprogrammierung 3
MQue Inputstream Timeout Netzwerkprogrammierung 2
S Servlet InputStream leer?! Netzwerkprogrammierung 14
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
P Inputstream "verfügbar" Netzwerkprogrammierung 4
G JPG im InputStream Netzwerkprogrammierung 2
A InputStream liest immer komplettes PHP-Script Netzwerkprogrammierung 6
A InputStream ließt nur 65536 Zeichen anstatt ganzer Puffer Netzwerkprogrammierung 8
D InputStream (Socket) mit BufferedInputStream puffern Netzwerkprogrammierung 2
M Sockets und InputStream Netzwerkprogrammierung 8
R Client nimmt den Inputstream nicht an Netzwerkprogrammierung 5
S Mail anhang in InputStream packen Netzwerkprogrammierung 5
M InputStream - Bytes gehen verloren? Netzwerkprogrammierung 3
E Problem bei Sockets/InputStream über externe Klasse Netzwerkprogrammierung 5
André B. In einen InputStream schreiben? Netzwerkprogrammierung 6
G inputstream hat plötzlich weniger inhalt Netzwerkprogrammierung 8
Z ProgressBar auf BufferedOutput- & -InputStream Netzwerkprogrammierung 2
F Neuer Json aus teilen eines vorhandenen Json Netzwerkprogrammierung 0

Ähnliche Java Themen


Oben