Application serveur client
Résolu
LearnDeep
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
LearnDeep Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
LearnDeep Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
Bonjour a tous
voici la classe Client:
Classe serveur :
l'erreur dans la classe serveur :
voici la classe Client:
package pack9; import java.io.*; import java.net.*; public class Client { public static void main(String[] args) throws Exception { final int port = 8080; InetAddress localhost=InetAddress.getLocalHost(); Socket socket = new Socket(localhost, port); System.out.println("SOCKET = " + socket); BufferedReader plec = new BufferedReader( new InputStreamReader(socket.getInputStream())); PrintWriter pred = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); String str = ("bonjour"); for (int i = 0; i < 10; i++) { // envoi d'un message pred.println(str); // lecture String fromServer = plec.readLine(); System.out.println(fromServer); } System.out.println("END"); // message de terminaison pred.println("END") ; plec.close(); pred.close(); socket.close(); } }
Classe serveur :
package pack9; import java.io.*; import java.net.*; public class Serveur { static final int port=8080; public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub ServerSocket s= new ServerSocket (port); Socket client=s.accept(); BufferedReader plec= new BufferedReader(new InputStreamReader(client.getInputStream())); PrintWriter pred=new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true); while (true) { // lecture du message String str = plec.readLine(); if (str.equals("END")) { System.out.println("END"); break; } //écriture de message pred.println(str); } client.close(); plec.close(); pred.close(); } }
l'erreur dans la classe serveur :
Exception in thread "main" java.net.BindException: Address already in use: NET_Bind
at java.base/java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.base/java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.bind(Unknown Source)
at java.base/java.net.PlainSocketImpl.bind(Unknown Source)
at java.base/java.net.ServerSocket.bind(Unknown Source)
at java.base/java.net.ServerSocket.<init>(Unknown Source)
at java.base/java.net.ServerSocket.<init>(Unknown Source)
at pack9.Serveur.main(Serveur.java:12)
A voir également:
- Application serveur client
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Changer serveur dns - Guide
- Desinstaller application windows - Guide
- Filezilla client - Télécharger - Téléchargement & Transfert
- Comment supprimer une application préinstallée sur android - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, as-tu essayé avec d'autres valeurs que 8080?
En effet, le programme est censé fonctionner. Mais si le port est déjà pris, soit par un autre logiciel, soit par une exécution précédente toujours en cours, alors il ne peut pas être utilisé en même temps.
Dans le cas où c'est un autre logiciel sur le PC, il suffit d'utiliser un autre port (côté serveur et client)
Dans le cas où c'est un processus Java qui utilise le port tu peux les lister avec la commande
Puis arrêter le processus avec la commande
Dans le cas où c'est un autre logiciel sur le PC, il suffit d'utiliser un autre port (côté serveur et client)
Dans le cas où c'est un processus Java qui utilise le port tu peux les lister avec la commande
jps
C:\Users\KX> jps
1234 Serveur
6789 Jps
Puis arrêter le processus avec la commande
taskkill
C:\Users\KX> taskkill /F /PID 1234
Opération réussie : le processus avec PID 1234 a été terminé.
"le chemin C:\Users\KX> n'est pas trouvable"
Euh... oui... Jusque là rien d'anormal. Mais la commande peut être fait n'importe où.
"la commande jps n'est pas reconnue"
Donc le JDK n'est pas bien configuré. Il faudrait le rajouter au PATH pour accéder aux commandes javac ou jps
https://mkyong.com/java/how-to-set-java_home-on-windows-10/
Euh... oui... Jusque là rien d'anormal. Mais la commande peut être fait n'importe où.
"la commande jps n'est pas reconnue"
Donc le JDK n'est pas bien configuré. Il faudrait le rajouter au PATH pour accéder aux commandes javac ou jps
https://mkyong.com/java/how-to-set-java_home-on-windows-10/
Tu peux également faire la commande
Exemple :
netstat -aboqui t'afficheras la liste des ports ouverts avec le nom du programme et le PID correspondant.
Exemple :
C:\Users\KX> jps
1234 Serveur
6789 Jps
C:\Users\KX> netstat -abo
Connexions actives
Proto Adresse locale Adresse distante État PID
TCP 0.0.0.0:8080 PC-KX:0 LISTENING 1234
[javaw.exe]
mais la classe client quand je l'execute ell affiche :
SOCKET = Socket[addr=DESKTOP-BNMDA02/192.168.137.1,port=8080,localport=55909]
null
null
null
null
null
null
null
null
null
null
END
mais la classe serveur ne s'exécute pas ! .
as-tu essayé avec d'autres valeurs que 8080 (dans la classe serveur, bien sûr)?