Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

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?

Anoniem
Fahr