Bonjour à tous,
Dans le cadre d'un jeu de plateau en java, moi et mon collègue essayons d'implémenter une partie multijoueur.
Voici respectivement nos classes server & client :
server :
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
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 package multi; import java.io.*; import java.net.*; public class Server implements Runnable{ boolean connectionOn = false; public void run(){ int port = 10022; try { ServerSocket sersoc = new ServerSocket(port); System.out.println("Serveur créé sur le port : "+port); // Attente de la connection d'un joueur. Socket soc = sersoc.accept(); System.out.println("Connection d'un nouveau joueur"); // La connection devient active connectionOn = true; // Création des flux et des interargissement avec ceux-ci (lecture/écriture) InputStream in = soc.getInputStream(); OutputStream out = soc.getOutputStream(); BufferedReader entree = new BufferedReader (new InputStreamReader(in)); BufferedWriter sortie = new BufferedWriter (new OutputStreamWriter(out)); // On boucle tant que la connexion est active while(connectionOn){ // On va chercher la prochaine instruction du client String message = entree.readLine(); if(message.equals("QUIT")){ System.out.println("System Shudown"); sortie.write("OK\n"); sortie.flush(); connectionOn = false; } else{ System.out.println("Instruction inconnue"); } } // Si la connection est fermée, on ferme le socket. soc.close(); } catch(Exception e){ System.out.println(e); } } }
Lorsque nous testons ce code en local celui-ci fonctionne et nous arrivons à intéragir avec le 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 package multi; import java.net.*; import java.io.*; import gui.*; public class Client implements Runnable { boolean serverOn = true; // Plateau du Client : //MultiGUI clientBoard = new MultiGUI(); public void run() { String hote = "217.*.*.*"; // ici nous rentrons l'adresse ip de celui qui héberge le serveur. int port = 10022; try{ // Ouverture du socket de connection du serveur. Socket soc = new Socket(hote, port); // Si la connection est correctement effectuée, on affiche un nouveau plateau : //this.clientBoard.setVisible(true); // Création des flux et des interargissement avec ceux-ci (lecture/écriture) InputStream in = soc.getInputStream(); OutputStream out = soc.getOutputStream(); OutputStreamWriter sortie = new OutputStreamWriter(out); BufferedReader entree = new BufferedReader (new InputStreamReader(in)); // TODO : Faire un listener ou un truc comme ca pour les clics sur le plateau sortie.write("QUIT\n"); sortie.flush(); while(serverOn){ System.out.println("coucou"); String message = entree.readLine(); System.out.println(message); if(message.equals("OK")){ System.out.println("ConnectionClosed Successfully"); serverOn = false; soc.close(); } } soc.close(); } catch(IOException e){ System.out.println(e); } } }
Par contre lorsqu'on essaye de rentrer l'ip de celui qui héberge le serveur dans la classe Client rien ne se passe, et ceci aussi bien chez l'un que chez l'autre.
Voila si vous avez des idées ^^
Merchi beaucoup![]()
Partager