Wechsel von DataOutputStream zu ObjectOutputStream

H3llGhost

Mitglied
Hallo Leute,

ich habe eine Server-Client-Applikation.
Mein Problem ist nach dem Wechsel von DataOutputStream zu ObjectOutputStream funktioniert gar nichts mehr.
Sprich es wird nichts gesendet und nichts empfangen.

Zu meiner Vorgehensweise beim Wechsel:
Ich habe einfach alle DataOutputStream's zu ObjectOutputStream verändert.
Dasselbe habe ich dann mit dem DataInputStream analog dazu gemacht.

Im Internet habe ich dann nen Artikel zum ObjectOutputStream gefunden, dass dies sehr langsam ist und deswegen JBossObjectOutputStream nutzen sollten.
Leider hat dies auch keinen Erfolg gebracht.

Habt ihr eventuell eine Idee worauf ich achten soll?

Danke im Vorraus. :)
 
Vielen Dank für deine schnelle Antwort.
Aber mal ne Frage habe ich zu deiner Antwort.
Die Methode flush() habe ich bis jetzt noch garnicht verwendet.
Und es hat auch so funktioniert, warum jetzt? :confused:
 
Weil der DataOutputStream das (anscheinend) einfach raushustet und gut is.
Der ObjectOutputStream cached intern, um die Länge zu optimieren (siehe hier).
Wenn Du dann an die Daten ranwillst zur Übertragung, sind keine da...
 
Vielen Dank für deinen Link.
Werde ich ausprobieren ... :)
Eine Frage habe ich noch ...
Im Artikel wird davon gesprochen, dass man den richtigen Zeitpunkt suchen sollte zum Reseten ...
Wann wäre der?
Würde das Ende einer Nachricht sinnvoll sein?
Da sich das Nachrichten-Objekt immer ändern würde ...
 
Zuletzt bearbeitet:
Du brauchst wahrscheinlich gar nicht resetten, es sei denn, der Code verwendet Nachrichten-Instanzen wieder, quasi in einem Nachrichten-Pool.
Der ObjectOutputStream ersetzt wirklich nur Referenzen auf dasselbe Objekt (Objektidentität).
Wenn der Code also ständig neue Nachrichten-Instanzen erzeugt, gibt es keinen Grund zum resetten.
Eventuell wird der ObjectOutputStream mit der Zeit immer mehr Speicher verbraten, da intern irgendwie die Identität auf das Objekt gemappt werden muß.
Aber wie üblich, nix dokumentiert ... ;)
 
Also der Aufruf würde dann in folgende richtung gehen:

Java:
Message tmp = new Message("ShowPN");
tmp.setMessage("blabla");
...
oout.writeObject(tmp);

Und so ändert sich ja bei jedem Mal auch der Nachrichten Inhalt oder?

Wie könnte ich das Speicherverbraten umgehen?
 
Zurück