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 :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ServerSocket socketServeur = new ServerSocket(COMMUNICATION_PORT); Socket socketClient = this.socketServeur.accept(); ObjectOutputStream flux = new ObjectOutputStream(socketClient.getOutputStream());
De l'autre côté le flux est exploité de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager