klient-serwer i strumienie

0

Witam.
Pisze prostą aplikacje klient serwer opartą na socketach. Jeżeli wysyłam z serwera same Stringi - wszystko jest ok. Jeżeli po wysłaniu stringów chce wysłać jakiś obiekt, to po stronie klienta mam wyjątek java.io.OptionalDataException
Z dokumentacji wynika, że ten wyjątek jest rzucany, jeżeli odbierany obiekt jest typem prymitywny. Poniżej skrócony kod:

Serwer:

client = socket;//client to Socket
input = new Scanner(client.getInputStream());
output = new PrintWriter(client.getOutputStream(),true);
outStream = new ObjectOutputStream(client.getOutputStream());
//wysylanie
output.println(a.getDeadline().getTimeAsString());
output.println(a.getItemCode());
outStream.writeObject(a.getImage());

Klient

socket = new Socket(host, PORT);
input = new Scanner(socket.getInputStream());
output = new PrintWriter(socket.getOutputStream(),true);
inStream = new ObjectInputStream(socket.getInputStream());
//odbieranie
String deadlineTime = input.nextLine();
String code  = input.nextLine();
ImageIcon img = (ImageIcon)inStream.readObject();

Próbowałem użyć flush ale nic to nie dało. Jeżeli wysyłam tylko Stringi, lub tylko ImageIcon to wszystko jest ok. Jeżeli wyśle najpierw ImageIcon a potem same Stringi też jest ok. Problem jest, jeżeli po wyslaniu Stringów chce wysłac jakis ImageIcon.

Jak to rozwiązać?

0

do odczytania tekstu można użyć ObjectInputStream.readUTF() http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html#readUTF()

1 użytkowników online, w tym zalogowanych: 0, gości: 1