Bonjour à tous,

Je suis entrain de développer une application réseau et j'ai besoin pour ce faire d'utiliser un TimerTask pour lancer des tâches toutes les x secondes. Seulement pour communiquer avec le serveur dans ma classe ClientUpdate qui étend TimerTask, je passe ma classe Client.java qui contient le nécessaire pour communiquer avec le serveur.

Mais je n'arrive pas à modifier les attributs public de ma classe Client passé en paramètre de mon TimerTask, ou alors je n'arrive pas à lire sur le réseau les objets que je reçois dans la classe ClientUpdate.

Savez-vous pourquoi ?

Je poste mes classes si jamais vous avez une idée...
ClientUpdate.java
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
package client;
 
import game.player.Player;
import game.player.PositionPlayer;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.TimerTask;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
 
import network.Request;
 
public class ClientUpdate extends TimerTask {
	Request r;
	PositionPlayer pp;
	Client c;
	Lock l;
 
	public ClientUpdate(Client client) {
		this.r = new Request();
		this.pp = new PositionPlayer();
		this.c = client;
		this.l = new ReentrantLock();
	}
 
	public void run() {
		//l.lock();
		// Mise a jour des joueurs de la region actuelle
		r.idapplication = 2;
		r.idtypereq = 1;
		c.nm.sendRequest(r);
 
		try {
			// Envoie de la position du joueur
			c.nm.oos.writeObject(c.joueur.pp);
 
			// Reception du serveur
			this.pp = (PositionPlayer) c.nm.recvObject();
		} catch (IOException e) {
			e.printStackTrace();
		}
 
		System.out.println("--------------------------------------------");
		System.out.println("NBPLAYER dans la region : "+this.pp.players.size());
 
		for(Player p: this.pp.players) {
			System.out.println("** "+p.name);
		}
 
		System.out.println("--------------------------------------------");
 
		//l.unlock();
	}
 
}
Client.java
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
package client;
 
import java.io.IOException;
import java.util.Timer;
 
import javax.swing.JOptionPane;
 
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.SlickException;
 
import network.NetworkManager;
import network.Request;
import game.GameManager;
import game.player.Player;
import game.player.PositionPlayer;
import game.world.GameTime;
 
/**
 * Gestion d'une session cliente
 * @author akrogames
 *
 */
public class Client implements Runnable {
	public GameManager gm;
	public NetworkManager nm;
	public Player joueur;
	private Thread t;
 
	public Client() {
		this.gm = new GameManager();
		this.nm = new NetworkManager();
		this.joueur = new Player(null, null);
		t = new Thread(this);
	}
 
	@Override
	public void run() {
		// On lance les procedures de MAJ.
 
		while(true) {
			//TODO ...
		}
	}
 
	/**
         * Permet de lancer le jeu du client
         */
	public void launchGame() {
		AppGameContainer app;
		try {
			// Creation du Thread de gestion du client
			this.t.start();
 
			// On met à jour le player
			this.joueur = (Player) this.nm.recvObject();
			System.out.println("Bienvenue "+this.joueur.name+", NUM: "+this.joueur.numplayer);
			System.out.println(this.joueur.pp.toString());
 
			app = new AppGameContainer(new Clientgame());
			app.setDisplayMode(800, 600, false);
	        //app.start();
 
			Timer time = new Timer();
			ClientUpdate cu = new ClientUpdate(this);
			time.schedule(cu, 0, 500);
 
 
		} catch (SlickException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
 
	/**
         * On ferme les connexions
         */
	public void close() {
		this.nm.close();
	}
 
 
 
}
D'avance merci de votre aide, en espérant que vous aurez une idée.

Bonne soirée.