[ObjectOutputStream] Pb de transfert d'objets
Je dois passer une liste d'objets d'un PC vers un autre.
Mes informations circulent via un ObjectOutputStream/ObjectInputStream de la manière suivante :
Connexion :
Code:
1 2 3 4 5
| ServerSocket socketServeur = new ServerSocket(COMMUNICATION_PORT);
Socket socketClient = this.socketServeur.accept();
ObjectOutputStream flux = new ObjectOutputStream(socketClient.getOutputStream()); |
Envoie de la Situation tactique mise à jour : Les attributs des objets (de type Mobile) sont modifiés avant chaque nouvel appel de la fonction
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public void envoyerSITAC(Mission mission) {
try {
ArrayList messageAEnvoyer = new ArrayList();
for (int i = 0 ; i < mission.getNbMobiles ; i++) {
messageAEnvoyer.add(mission.getMobile(i));
}
flux.writeObject(messageAEnvoyer);
flux.flush();
} catch (IOException e) {
e.printStackTrace();
}
} |
De l'autre côté le flux est exploité de la manière suivante :
Code:
1 2 3 4 5
| ObjectInputStream flux = new ObjectInputStream( new BufferedInputStream(clientSocket.getInputStream()));
ArrayList messageRecuDuServeur = (ArrayList) flux .readObject();
Mobile mobile = (Mobile) (messageRecuDuServeur.get(i)); |
Mon problème est le suivant :
Les attributs des mobiles que je reçoit ne sont pas mis à jour, je ne reçoit que les 'anciennes' version des objets.
J'ai l'impression que comme les references de ces objets ne sont pas modifiées,
le flux ne met pas à jour les nouvelles valeurs des attributs et conserve les anciennes valeurs.
Y a t'il un moyen de spécifier ce changement sans avoir à crée une copie (donc une nouvelle reference) de chacun des mobile que je veux envoyer ?
Merci
M@tth