programmation Java (école d'ingénieur) · Chapitre 16 · Exercice de TD
Un client interactif
Réseau : sockets client/serveur · niveau 2
Énoncé
Écrire un client du serveur de calcul qui lit les requêtes au clavier (Scanner), les envoie, affiche les réponses, et s'arrête sur BYE, à la fin de l'entrée, ou si le serveur ferme la connexion. Il doit afficher un message lisible si le serveur n'est pas lancé.
Corrigé
Scanner clavier = new Scanner(System.in);
try (Socket s = new Socket("localhost", 5001);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream(), StandardCharsets.UTF_8));
PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream(), StandardCharsets.UTF_8), true)) {
System.out.println("Connecté. Tapez vos calculs (QUIT pour finir).");
while (true) {
System.out.print("> ");
if (!clavier.hasNextLine()) break; // fin de l'entrée
String requete = clavier.nextLine();
out.println(requete);
String reponse = in.readLine();
if (reponse == null) { // le serveur a fermé
System.out.println("Connexion perdue");
break;
}
System.out.println(reponse);
if (reponse.equals("BYE")) break;
}
} catch (IOException e) {
System.out.println("Serveur injoignable : " + e.getMessage());
}
Une session dans un terminal (les requêtes sont tapées par l'utilisateur) :
Connecté. Tapez vos calculs (QUIT pour finir).
> ADD 17 25
OK 42
> DIV 100 7
OK 14
> QUIT
BYE
Et sans serveur :
Serveur injoignable : Connection refused100 % gratuit
La suite du chapitre est sur Adloun
- 9 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.