| 

.NET C# Java Javascript Exception

2
Hallo,

für ein Online-Spiel möchte ich Daten über UDP verschicken. Dazu müsste ich alle Anfragen entweder selbst oder mit der Standard-API (de-)serialisieren. Hier habe ich bereits ein Beispiel für die Serialisierung gefunden:
http://openbook.galileocomputing.de/javainsel8/javainsel_14_012.htm#mjdfca76a9653ffb93d804df4379bccf7b

Die Deserialisierung müsste ja genau umgekehrt mit einem ObjectInputStream, der auf einen ByteArrayInputStream (Javadoc) zugreift, arbeiten. Kann ich dem ByteArrayInputStream das Byte-Array auch auf einem anderen Wege als über den Konstruktor übergeben? Ansonsten müsste ich andauernd neue ByteArrayInputStreams erstellen, für jedes ankommende Paket einen neuen.
News:
22.12.2009
clonejo 144 2 6
1 Antwort
1
Nein. Aber du kannst dich von dem ByteArrayInputSream ableiten. Alle wesentlichen Membervariablen sind protected. In der abgeleiteten Klasse solltest du ein setBuf() oder so implemntieren können. Dort must du aber nicht nur den buf setzen, sondern auch mark, count und pos.
22.12.2009
BeachBlocker 617 3
Würde ein reset() nicht reichen?
clonejo 22.12.2009
1
reset() reicht nicht, wenn zuvor ein mark() auf dem InputStream gerufen wurde; die reset Funktion Zitat "Resets the buffer to the marked position". Count muss ohnehin unabhängig von mark/reset gesetzt werden. Insgesamt muß die setBuf() Mehode alles tun, was sonst im ctor passiert. Einfach mal in der Doku vom [url=http://java.sun.com/j2se/1.5.0/docs/api/java/io/ByteArrayInputStream.html]ByteArrayInputStream[/url] nach "construct" suchen.
BeachBlocker 23.12.2009
Ich hab jetzt die Werte aus dem Originalkonstruktor von ByteArrayInputStream kopiert:

public void setBuf(byte[] buf) {
this.buf = buf;
this.pos = 0;
this.mark = 0;
this.count = buf.length;
}
clonejo 23.12.2009

Stelle deine Java-Frage jetzt!