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

  1. Lister l'ensemble des requêtes offertes par votre serveur. Vérifier que cela permet d'offrir un service complet, suffisant et correct.
  2. Donner la structure de données qui permet de gérer votre serveur.
  3. 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

  1. 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.
  2. Ecrire le code d'un client qui teste l'ensemble des requêtes offertes dans votre serveur.
  3. Tester votre serveur avec votre client.
  4. 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.

  1. 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.
  2. Ecrire le code d'un client qui teste l'ensemble des requêtes offertes dans votre serveur.
  3. Tester votre serveur avec votre client.
  4. 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.

  1. Implémenter  le code du serveur multicast.
  2. Ecrire le code d'un client
  3. 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

  1. 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)
  2. 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é

Projet Rainbow

Ressources en lignes

Les rubriques des cours :

 

Rechercher sur ce site avec Google

 

dernière mise à jour
le 18 septembre 2003

 

 

Réservation d'Hôtel à Prix Réduits - HotelClub