TD "Systèmes distribués" Numéro 3
Réalisation d'un protocole de communication point-à-point basé sur des sockets en mode connecté

MIAGE 3ème année
1998 - 1999


Auteurs : Patrick Itey
 

Objectifs :
Il s'agit d'écrire un protocole de communication basé sur des sockets. Il permettra l'échange de messages entre un serveur et un client distant.
L'implémentation se fera en Java en utilisant les sockets du package java.net. Cet exercice vous permettra aussi de manipuler les threads java (java.lang.Thread) pour obtenir un serveur  multiclients acceptant et traitant plusieurs connexions simultannées de clients distants.
Vous pourrez vous aider du TD Numéro 2 et de mon cours "programmation réseau en Java"  (postscript compréssé)
 

Notions à connaître : allez voir cette page de rappels rapides sur l'utilisation des sockets en Java
 

Travail à réaliser : implantation de communications avec accusé de réception
Une méthode fiable pour envoyer des messages est de fournir un accusé de réception (Acknowledge abrégé ACK pour la suite) chaque fois qu'un message est reçu.
Comme le montre la figure ci-dessous, le principe est simple à mettre en oeuvre : lorsqu'un client réalise une requête au serveur, il obtient une réponse (en fait, on combine une réponse et un ACK).
Une fois la réponse entièrement reçu, le client donne lui aussi un accusé de réception au serveur.
 
 





C'est ce protocole qui devra être implanté.
 

Eléments pour l'implémentation :

Vous créerez un serveur multiclients en implémentant les 2 classes suivantes :

Il faut ensuite créer un client  : Vous n'oubllierez pas de traiter toutes les exceptions susceptibles d'être levées.

L'exécution de cette application client-serveur avec 2 clients peut avoir l'allure suivante :

cocher> java AckServeur
Serveur à l'écoute sur le port : 45678
Serveur : receive ACK from client pit
Serveur : receive ACK from client pat
Serveur : receive ACK from client pat

>java AckClient cocher pit
Connexion : mycpu/189.154.12.87 port: 45678
?toto
!TOTO
?fin
Connexion terminée

>java AckClient cocher pat
Connexion : mycpu/189.154.12.87 port: 45678
?tata
!TATA
?tutu
!TUTU

Le "?" indique que le client attend un message de l'utilisateur. Le "!" préfixe le service rendu par la connexion.