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ć?