Objectifs : Ecrire une application réseau sur un modèle client-serveur multithread avec Java 1.1
Cet exercice vouspermettra de mettre en application :
Notions à connaître absolument: allez voir cette page de rappels sur l'utilisation des sockets en Javala création et l'utilisation de threads Java (java.lang.Thread) l'utilisation des sockets Java (java.net)
Présentation :
L'exercice du TD No 1 (trés
simpliste) comporte plusieurs limitations, à savoir
Travail à réaliser :
Lorsqu'une application cliente (classe MajClient.java) demande
une connexion , le serveur (classe MajServeur.java) lui en construit
une (méthode accept()
de java.net.ServerSocket).
La demande de connexion par le client est une création d'une
instance de la classe java.net.Socket indiquant la machine hôte
et un numéro de port. (voir utilisation
des sockets en Java)
Le serveur utilisera un thread Connexion (Connexion.java)
(classe dérivée de java.lang.Thread ou implémentant
l'interface Runnable), capable de gèrer un échange de données
en tâche de fond comme le montre la figure ci-dessous :

C'est le thread Connexion qui réalisera le service de transformation des caractères en majuscules.
Le lancement du serveur sur l'hôte de nom mycpu s'effectue ainsi :
mycpu> java MajServeur
Serveur à l'écoute sur
le port : 45678
Le serveur est ainsi en attente de connexions de la part des clients. Un client demande une connexion ainsi :
>java MajClient mycpu
Connexion : mycpu/189.154.12.87 port:
45678
?toto
!TOTO
?pit
!PIT
?fin
Connexion terminée
Le "?" indique que le client attend
un message de l'utilisateur. Le "!" préfixe le service rendu par
la connexion.
Corrections :
La classe Connexion est une classe dérivée de la classe java.lang.Thread :
La classe Connexion implémente l'interface java.lang.Runnable :