| |
TPS Sockets Java
Anne Marie Déry
Cours ESSI2
Description du sujet : un serveur de surnoms
Dans la lignée de services très utiles tels que ceux offerts par les serveurs
de noms (DNS...) et les serveurs de clés, nous vous proposons de mettre en place
un serveur de surnoms. Ce serveur stocke le nom associé au surnom d'un étudiant
ou d'un enseignant de l'ESSI. Deux personnes différentes ne peuvent pas avoir le
même surnom mais une personne peut être affublée de plusieurs surnoms. Il doit
être possible par exemple d'enregistrer un nouveau surnom et un nom associé, de
modifier l'enregistrement, de lister les noms et surnoms enregistrés dans le
serveur. Le service offert ne sera pas persistant : il initialise les
associations surnom - nom au lancement et perd les nouvelles associations
lorsqu'il est arrêté.
1. Définition du protocole d'application
- Lister l'ensemble des requêtes offertes par votre serveur. Vérifier que
cela permet d'offrir un service complet, suffisant et correct.
- Donner la structure de données qui permet de gérer votre serveur.
- Travailler en accord avec un autre binôme afin de permettre une
communication entre votre serveur et leur client et réciproquement.
2. Implémentation d'une communication client-serveur simplifiée en mode TCP
- Implémenter le code du serveur qui implémente les services que vous avez
listés au 1. Le serveur n'est pas multi clients dans un premier temps.
- Ecrire le code d'un client qui teste l'ensemble des requêtes offertes dans
votre serveur.
- Tester votre serveur avec votre client.
- Tester à distance votre client avec le serveur développé par le binôme
choisi au 1.3
Pour prendre un petit peu de recul posez vous les questions suivantes :
- quelles sont les hypothèses minimales à faire pour qu'un client puisse
dialoguer avec le serveur écrit par un autre binôme ?
- Comment rendre le serveur multi-clients ?
- Comment concevoir le serveur afin de pouvoir simplement réutiliser du code
si le type de communication change ?
3. Implémentation d'une communication client-serveur en mode Datagramme (Tp
no 2)
L'évolution attendue du service proposée est bien entendue le traitement du
multi-clients et vu le type de service offert, le passage en mode datagramme est
facilement envisageable.
- Implémenter le code du serveur qui implémente les services que vous avez
listés au 1. Le serveur gère une communication en mode UDP.
- Ecrire le code d'un client qui teste l'ensemble des requêtes offertes dans
votre serveur.
- Tester votre serveur avec votre client.
- Tester à distance, votre client avec le serveur développé par le binôme
choisi au 1.3 et réciproquement.
Pour prendre un petit peu de recul posez vous les questions suivantes :
- avez vous été amenés à modifier le protocole d'application choisi au 1 et
utilisé au 2, si oui pourquoi ?
- Quelle parties de code développée dans la partie 2 avez-vous pu réutiliser
dans le 3 ?
- Pensez-vous qu'une conception différente de votre code aurait pu vous
permettre d'en ré-utiliser davantage ?
4. Implémentation d'une communication multicast (Travail non encadré)
Supposons que le serveur de surnoms soit un serveur très important pour
l'école et que nous soyons amené à mettre en place des serveurs esclaves qui
soient des copies de ce serveur. Pour simplifier nous utiliserons une
communication en mode multicast dans laquelle tous les serveurs esclaves sont
des clients du serveur principal. Via cette communication le serveur principal
infome régulièrement (délai de temps) les serveurs esclaves de son état.
- Implémenter le code du serveur multicast.
- Ecrire le code d'un client
- Tester votre serveur avec vos clients
Un petit peu de recul : quel est le protocole d'application que vous avez mis
en place pour cette partie ? Comment faire évoluer le code du client et du
serveur afin de mixer les services offerts au 4 et au 3 (2 types de client
différents) ?
5. Rendu des TPs
Date du rendu : Mercredi 31 mai 2000
En binôme au plus vous allez déposer sous ~pinna/www/Internet/Sar/RendusSockets
dans un répertoire que vous allez créer avec vos noms de binomes
- un document contenant les informations suivantes : vos noms, le nom des
étudiants avec lesquels vous avez collaboré, les réponses au 1, aux questions
de recul posées dans chaque partie (2, 3, 4)
- le code commenté sous forme d'un fichier .jar du 4
| |
Michel RIVEILL

Laboratoire I3S - Bât. ESSI
930 Route des Colles
06903 Sophia Antipolis CEDEX
email :
riveill at unice.fr
Généralité
Ressources en lignes
Les rubriques des cours :
dernière mise à jour
le 18 septembre 2003
|