Byte-Array per for-Schleife schicken

Diskutiere Byte-Array per for-Schleife schicken im Netzwerkprogrammierung Bereich.
Fabian321

Fabian321

Guten Tag,

ich sende dem Server mit folgendem Code eine Reihe von Arrays. Als Erstes die Anzahl der Arrays und danach die Byte-Arrays:
Code:
Socket client = new Socket("localhost", 1612);
OutputStream outStream = client.getOutputStream();
ObjectOutputStream ous = new ObjectOutputStream(outStream);
ous.flush();

PrintWriter outP = new PrintWriter(outStream);
outP.println(out.Final_Filebyte.length); // Sende die Anzahl der Elemente
outP.flush();

for (int i = 0; out.Final_Filebyte.length > i; i++) {
  byte[] send = out.Final_Filebyte[i];
  ous.writeObject(send); // sende die Arrays
  ous.flush();
}
und empfange die Daten auf dem Server dann mit folgenden Code:
Code:
ObjectInputStream ois = new ObjectInputStream(inStream);
BufferedReader inS = new BufferedReader(new InputStreamReader(inStream));
String input = inS.readLine();
int leng = Integer.parseInt(input); // erhalte die Anzahl und schreibe sie in ein int

byte[][] bytes = new byte[leng][]; // erstelle das Array wo die Daten hineingeschrieben werden

for (int i = 0; leng > i; i++) {
  outO = ois.readObject();
  byte[] getByte = (byte[]) outO;
  bytes[i] = getByte; // empfange die Daten und speichere sie
}
Dabei bekomme ich folgenden Fehler:

Code:
java.io.EOFException
   at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
   at java.io.ObjectInputStream.readObject0(Unknown Source)
   at java.io.ObjectInputStream.readObject(Unknown Source)
   at sendTest.inWirter.run(inWirter.java:52)
   at java.lang.Thread.run(Unknown Source)

Wie kann ich das Problem lösen?

Schon einmal Danke im Voraus.
 
H

httpdigest

Warum verwendest du denn umständlicherweise einen zusätzlichen PrintWriter und BufferedReader, um die Länge als Text/String zu senden, und nicht stattdessen einfach ObjectOutputStream.writeInt(int)?? Wenn man einmal einen ObjectOutputStream auf einem OutputStream instanziiert hat, sollte man besser nichts anderes mehr zusätzlich auf dem OutputStream tun.
Davon mal abgesehen lässt sich das Ganze viel einfacher lösen (ohne Schleife):
Java:
// Sender:
OutputStream outStream = client.getOutputStream();
ObjectOutputStream ous = new ObjectOutputStream(outStream);
ous.writeObject(out.Final_Filebyte); // <- sende byte[][] Objekt

// Empfänger:
ObjectInputStream ois = new ObjectInputStream(inStream);
byte[][] bytes = (byte[][]) ois.readObject();
 
Thema: 

Byte-Array per for-Schleife schicken

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben