Adloun

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 refused

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →