Bonjours à tous !
Je travaille actuellement sur un logiciel de contrôle de serveurs de jeu à distance.
Pour cela j'ai créé un logiciel serveur sur un VPS que j'ai loué, le même que celui sur lequel j'héberge mes serveurs de jeu.
Du coté client j'ai un panel qui me permet de contrôler tout ça à distance, jusque là pas de problèmes.
J'ai eu l'idée de rajouter un chat console permettant aux utilisateurs du logiciel de pouvoir parler en temps réel. Pour cela j'ai un second programme .jar qui s'ouvre dans la console.
Je commence par me connecter au serveur pour lui signifier que je me connectes au chat.
Ensuite je récupère les utilisateurs connectés pour les afficher.
(Ensuite je lance le Thread du ServerSocket, voir lui bas)
Enfin grâce à un Scanner(System.in) je récupère le prochain message du joueur et je l'envoi une fois saisit.
Jusque là pas de problèmes.
Pour permettre au chat client de récupérer les messages envoyé par les autres utilisateurs, je n'ai pas trouvé d'autres moyens que de créer un ServerSocket auquel le serveur va envoyer les messages.
Donc j'envoi lors de ma connexion au chat (coté client) mon adresse ip locale grace à InetAddress.
Le problème est que du coté serveur je récupère cette erreur lors de la tentative de connexion :
Code du chat client lors de la création du ServerSocket qui reçoit les messages des autres utilisateurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 java.net.ConnectException: Connexion terminée par expiration du délai d'attente (Connection timed out) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.<init>(Socket.java:434) at java.net.Socket.<init>(Socket.java:244) at main.Chat.run(Chat.java:27)
(C'est un Thread)
Voici le code du coté serveur lors de l'envoi d'un message :
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 try { s = new ServerSocket(51169); System.out.println(s.getInetAddress().getHostAddress()); System.out.println(InetAddress.getLocalHost().getHostAddress()); while(Chat.truelogs && Chat.continu) { Socket ss = s.accept(); in = new BufferedReader(new InputStreamReader(ss.getInputStream())); String msg = in.readLine(); System.out.println(msg); in.close(); ss.close(); } s.close(); } catch (Exception e) {e.printStackTrace();}
(C'est un Thread)
Voilà j'espère que je vous ai donné toutes les informations nécessaires, je vous remercie d'avoir pris le temps de lire mon post, cordialement drakonic59.
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 try { for (String u : Main.luc) { // luc est une ArrayList<String> contenant les utilisateurs // connectés au chat s = new Socket(Main.lui.get(u), 51169); // lui est une HashMap<String, String> // contenant <utilisateur, ip> pour l'envoi des messages // ^ C'est également la ligne mise en cause dans l'erreur donné par le // || serveur "at main.Chat.run(Chat.java:27)" out = new PrintWriter(s.getOutputStream()); out.println(m); out.flush(); out.close(); s.close(); } } catch (Exception e) { e.printStackTrace();}
PS : Peut-être un problème d'ouverture de ports ?
Partager