Ok, ho modificato il sorgente che ho postato prima nel seguente modo ossia, dopo la connessione il server, quest'ultimo invia un messaggio al client: "ACCEPT MESSAGE".
Il Client (VB6) riceve il messaggio "ACCEPT START" ma contiene una serie di caratteri in testa.
Successivamente, invio dal client un messaggio "START" verso il server (Java), il server genera la seguente eccezione:
Exception in Thread "main" java.io.StreamCorruptedException: invalid stream header: 4E4D4D54
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:808)
at java.io.ObjectInputstream.<init>(ObjectInputStream.java:301)
at application-ServerReader.main(ServerReader.java:84
Riporto il codice modificato con l'inserimento di due righe:
while(true){
System.out.println("Waiting for client request");
//creating socket and waiting for client connection
Socket socket = server.accept();
System.out.println("Arrivato messaggio");
//read from socket to ObjectInputStream object
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); //ADD
oos.writeObject("ACCEPT MESSAGE"); //ADD
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
System.out.println("messaggio passato all'ObjectInputStream");
//convert ObjectInputStream object to String
String message = (String) ois.readObject();
System.out.println("messaggio passato al readObject");
Dal lato client, viene ricevuta la seguente stringa: "ACED0005740014" tradotti in esadecimale e seguita da "ACCEPT MESSAGE" in chiaro.
Mi sembra di capire che, in effetti, per una corretta comunicazione ci devono essere caratteri di inizializzazione e di conclusione del messaggio (possibile?) o meglio il client deve gestire delle intestazioni da attaccare al messaggio in testa ?