Application serveur client [Résolu]

Messages postés
42
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
1 octobre 2019
-
Bonjour a tous

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)
Afficher la suite 

2 réponses

Messages postés
8749
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2019
436
0
Merci
bonjour, as-tu essayé avec d'autres valeurs que 8080?
LearnDeep
Messages postés
42
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
1 octobre 2019
> yg_be
Messages postés
8749
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2019
-
oui j'ai esssayé mais ça n'as pas marché
yg_be
Messages postés
8749
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2019
436 > LearnDeep
Messages postés
42
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
1 octobre 2019
-
quelle message d'erreur?
LearnDeep
Messages postés
42
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
1 octobre 2019
> yg_be
Messages postés
8749
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2019
-
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)
yg_be
Messages postés
8749
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 octobre 2019
436 > LearnDeep
Messages postés
42
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
1 octobre 2019
-
avec quelles valeurs as-tu essayé?
LearnDeep
Messages postés
42
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
1 octobre 2019
-
2525
Commenter la réponse de yg_be
Messages postés
16040
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
19 octobre 2019
2429
0
Merci
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
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é.
LearnDeep
Messages postés
42
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
1 octobre 2019
-
Bonjour , dans mon cmd (windows 10) la commande jps
n'est pas reconnue
le chemin C:\Users\KX> n'est pas trouvable
KX
Messages postés
16040
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
19 octobre 2019
2429 > LearnDeep
Messages postés
42
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
1 octobre 2019
-
"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://www.mkyong.com/java/how-to-set-java_home-on-windows-10/
KX
Messages postés
16040
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
19 octobre 2019
2429 > LearnDeep
Messages postés
42
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
1 octobre 2019
-
Tu peux également faire la commande
netstat -abo
qui 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]
Commenter la réponse de KX