Salve a tutti 
Vorrei chiedere un parere.
Sto scrivendo un'applicazione che dovrebbe essere in grado di passare degli oggetti da client -> server attraverso i socket.
Quindi ho pensato di usare ObjectInputStream e ObjectOutputStream.
Usando queste due classi e i relativi read/writeObject pensavo di riuscire a passare degli oggetti fatti da me, e invece..
Quando passo oggetti come String tutto fila liscio, lo stesso per i tipi primitivi: int ecc.
Ma se invio un oggetto (che implementa Serializable e che viene opportunamente convertito) non mi riceve o invia nulla.
Client
codice:
connection = new Socket(ip, port);
toServer = new ObjectOutputStream(connection.getOutputStream());
fromServer = new ObjectInputStream(connection.getInputStream());
APacket a1 = new APacket();
APacket a2 = new APacket();
toServer.writeObject(a1);
toServer.flush();
toServer.writeObject(a2);
toServer.flush();
APacket r = (APacket)fromServer.readObject();
fromServer.close();
toServer.close();
Server
codice:
toClient = new ObjectOutputStream(connection.getOutputStream());
fromClient = new ObjectInputStream(connection.getInputStream());
APacket a1 = (APacket)fromClient.readObject();
APacket a2 = (APacket)fromClient.readObject();
System.out.println(a1.test + " " + a2.test);
APacket se = new APacket();
toClient.writeObject(se);
toClient.flush();
toClient.close();
fromClient.close();
Sono in due progetti diversi e per connection è un oggetto Socket.
Classe APacket
codice:
import java.io.Serializable;
public class APacket implements Serializable {
public int test = 13;
}
Semplicemente non scrive niente :\.