D'abord bonjour à tous...
Bon je poste un problème ici sur lequel je commence à m'arracher les cheveux...
Je vous explique, je suis en train de créer une application serveur/client en java. Dans cette application, le serveur envoie des données modifiées toutes les 30 secondes à tous les clients connectés.
Ca donne le Thread de la partie Serveur:
Et le Thread de la partie Client:
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
20
21
22
23
24
25
26 public void run(){ System.out.println("Thread d'envoi démarré"); while (active) try{ matrix.setProduction(); System.out.println("Envoi des données"); for (int i=0; i<nbSockets;i++) { System.out.println("[Serveur] "+matrix); liste.get(i).writeObject(matrix); liste.get(i).flush(); /* liste.get(i).writeObject(new String("Ceci est le message!"+K)); liste.get(i).flush(); K++; */ } sleep(30000); } catch(Exception e){ System.err.println("Erreur lors de l'envoi "+e); } }
La communication marche, puisque la matrice est bien reçue la première fois, mais ensuite même si l'affichage dans le serveur montre la bonne matrice modifiée, dans le client, c'est toujours la même matrice qui s'affiche pourtant le client affiche bien le message après la réception par le serveur (toutes les 30 secondes), à croire qu'il recoit bien quelque chose mais qu'il ne modifie pas l'objet en conséquence.
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 run(){ System.out.println("Thread de réception démarré"); while (connected){ Object o; try{ o = in.readObject(); System.out.println("Reception données"); // CA MERDE ICI: TOUJOURS LE MEME OBJET O AFFICHE! System.out.println("[Client] Objet Recu"+ o); } catch(Exception e){ System.err.println("Erreur lors de la réception: "+e); o = null; } // TESTS SUR LE TYPE DE O moniteur.receiveData(o); } }
Je présume qu'il s'agit d'un problème de référence mais je ne vois pas bien où il se situe...
Comme vous pouvez le voir j'ai testé l'envoie d'une chaine de caractère qui s'incrémente de 1, et là par contre l'envoi fonctionne!
Je vois vraiment pas le pb! :s
Une idée?
Partager