Vraag & Antwoord

Programmeren

[Java] XMLEncoder/XMLDecoder en socket streams

Hallo mensen, Ik wil graag met java sockets beans heen en weer sturen tussen server en client. Het maken van een connectie lukt allemaal prima, maar dan begint het gelazer. Ik heb een vrij simpele bean, Message, met 1 veld (int iMsgCode) en een set en get voor dat veld. Als ik 'm door een XMLEncoder jaag ziet de output er prima uit (als ik als output stream System.out gebruik). Nu maak ik aan de client kant een XMLEncoder met als output stream de socket.getOutputStream(). Aan de server kant maak ik een XMLDecoder met als input stream de socket.getInputStream(). Als ik nu aan de server kant zeg: [code:1:62d5bf543f] Message msg = (Message)xmlInput.readObject(); [/code:1:62d5bf543f] dan gaat ie blocken. Prima, dacht ik eerst, hij blocked tot het object binnen is. Aan de client kant stuur ik een object en hij blocked nog steeds. Ik stuur nog een object en nog 1 en nog 1 en nog 20 - nog steeds blocking. Pas als ik de verbinding verbreek leest ie het object en geeft het weer aan de server kant. Dat was nou net weer niet de bedoeling... Ik heb geen idee waarom dit niet gaat en waarom ie zo vreemd doet. De readObject() zit in een eindeloze while loop die breaked als ie 1 bepaalde message binnen krijgt. In dit geval dus nooit omdat ie eindeloos blijft hangen op readObject()... Aan de client kant doe ik wel een flush(). Ik heb ook al geprobeerd met close(), omdat dan de postamble (</java>) geschreven wordt, dat maakt echter geen verschil. Het enige wat dan gebeurd is dat mijn socket ook gesloten wordt... Heeft iemand misschien advies?