Bonjour à tous,
J'essaie de créer une petite application dotée d'un serveur ( certes réduit à son minimum usage, mais fonctionnel ) qui reçoit la variable "send" incrémentée à chaque fois que le Client appui sur la touche du haut du clavier ( VK_UP ).
Le serveur est en mode console.
Le Client quant à lui, est une fenêtre JFrame qui intègre une JPanel ( la classe Connexion ) qui lui-même fait appel à une classe nommée " Test " qui fait office de Thread dans la classe Connexion.
Le problème, c'est que le serveur détecte bien la connexion du Client, mais lorsque j'appuie sur la touche du haut du clavier ( VK_UP ) depuis le Client, il ne se passe strictement rien.. Aucune incrémentation de la variable "send", rien ne s'envoi sur le serveur..
La classe Connexion :
La classe Test :
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 import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import javax.swing.JPanel; public class Connexion extends JPanel { int send = 0; boolean envoi = false; public Connexion(){ this.setFocusable(true); this.addKeyListener(new Test()); Thread Execute = new Thread(new Test()); Execute.start(); } }
Dans cette classe Test, on dirait que ce code qui est compris dans un While(true){ n'est pas pris en compte lorsque j'appuie sur la touche VK_UP, la variable send ne s'incrémente pas et ne s'envoie pas sur le serveur, voici le bout de code en question sensé incrémenter et envoyer la variable send au serveur..
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 import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class Test extends Thread implements KeyListener { int send = 0; boolean envoi = false; public void run() { try{ Socket s = new Socket("localhost",1234); while (true){ Thread.sleep(3); OutputStream os = s.getOutputStream(); InputStream is = s.getInputStream(); if (envoi){ send++; os.write(send); } int rep = is.read(); System.out.println(rep); } }catch(Exception E) {} } public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_UP){ System.out.println("Compteur interne : "+send); envoi = true; } } public void keyReleased(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_UP){ envoi = false; } } public void keyTyped(KeyEvent e) {} }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (envoi){ send++; os.write(send); }
Je n'arrive pas à comprendre pourquoi, merci de bien vouloir m'éclairer cher(s) passionné(s) ! :-)
Partager