Programmation Réseaux en Java

Durée : 6 semaines

Responsable : Anne-Marie Pinna Dery

Resumé

Cet enseignement introduit les concepts de la programmation réseaux en les appliquant dans le langage Java. Nous étudierons plus particulièrement les Sockets Java et introduirons l'appel de méthodes à distance avec RMI.

Objectifs du cours

L'objectif est triple. Il s'agit de pouvoir écrire des applications Client Serveur en Java, de mettre en évidence ce qui est nécessaire de connaitre au niveau couches basses du réseaux (cf. 6 semaines suivantes) et d'introduire les plateformes pour objets distribués.

Intervenants

Nom Affiliation Contact
Anne-Marie Pinna Dery UNS/I3S pinna@polytech.unice.fr
Igor Litovsky UNS lito@polytech.unice.fr
Catherine Faron Zucker UNS/I3S faron@polytech.unice.fr


Cours

Tutoriels Java

TPS : Sockets Java à RMI

Objectifs

Ces TPS doivent vous apprendre à :

1. Ecrire le protocole d’application d’un serveur de façon à ce qu’il soit suffisamment complet et précis pour qu’un client puisse être implémenté afin d’utiliser votre serveur

2. Appréhender des technologies telles que le RMI de Java qui permettent de générer automatiquement une grande partie des codes Client et Serveur

3. Déployer correctement une application Client - Serveur sur les postes Client et Serveur.

Description du sujet : un serveur de surnoms

Dans la lignée des 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 du département SI de l'EPU. 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é.

Modalité des TPs

6 séances encadrées sont consacrées à ce travail. Vous devez travailler en binôme et coopérer ponctuellement avec d'autres binômes dont un choisi par votre encadrant de TP


Partie Sockets (5 séances encadrées)

1. Communication client-serveur

Etape 1 - A faire à deux binômes

Dans le contexte d’une communication TCP :

Lister ensemble les requêtes offertes par votre serveur (appelées plus loin services). Vérifier que cela permet d'offrir un service complet, suffisant et correct.

Tirer au sort la sérialisation à mettre en œuvre (Objet ou Chaîne).

Rédiger dans un fichier protocoleDApplicationAuDessusDeTCP.txt la description du protocole d’application et de la sérialisation.

Choisir deux services à implémenter.

Etape 2 – A faire par chaque binôme.

A partir des informations contenues dans protocoleDApplicationAuDessusDeTCP.txt :

  • Implémenter le code du serveur pour deux services que vous avez choisis précédemment. Ecrire le code d'un client qui teste ces services.
  • Tester votre serveur avec votre client.
  • Tester à distance votre client avec le serveur développé par le binôme collaborateur.

Si cela s’avère nécessaire, mettez à jour le fichier protocoleDApplicationAuDessusDeTCP.txt

Etape 3 – A faire en collaboration avec un binôme affecté par votre encadreur

Echanger par mails les fichiers protocoleDApplicationAuDessusDeTCP.txt et toutes les classes Java qui pourraient être utiles. Toute autre communication ne doit se faire que si vous êtes bloqués pour réaliser la suite et uniquement par mail, en mettant votre encadreur en copie.

Ecrire le code d'un client qui teste les services offerts par le serveur du binôme collaborateur.

Tester à distance votre client avec le serveur développé par le binôme collaborateur. Si cela s’avère nécessaire, mettre à jour le fichier protocoleDApplicationAuDessusDeTCP.txt (en cas d’échanges de mails).

2. Questions de recul avec implémentations complémentaires si nécessaire – A rendre (cf. Consignes de rendu en fin d’énoncé)

1. Quelles sont les informations minimales à connaitre ou à télécharger pour pouvoir implémenter et exécuter un client qui interroge le serveur écrit par un autre binôme qui s’exécute sur une machine distante ?

2. Quelles sont les instructions (parties de code) qui gèrent les connexions de plusieurs clients en parallèle ? (à implémenter si cela n’a pas été fait dans l’étape no 1)

3. Comment concevoir le serveur afin de pouvoir simplement réutiliser du code si on utilise UDP comme protocole de transport ? Implémenter la communication en UDP et écrire si nécessaire le fichier protocoleDApplicationAuDessusDeUDP.txt qui décrit les variantes sur le protocole d’application et la sérialisation. Facultatif : Pour tous ceux qui ont fait la sérialisation chaîne posez-vous la même question avec le protocole d'application pour une sérialisation Objet que vous avez reçu.

4. Quels sont les principaux avantages et/ou inconvénients d'une communication UDP pour ce type de service ?

5. Supposons que le serveur de surnoms soit un serveur très important pour l'école et que nous soyons amenés à 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 informe régulièrement (délai de temps) les serveurs esclaves de son état.

a. Quel est le protocole d'application que vous pourriez mettre en place pour cette partie ?

b. Comment faire évoluer le code du client et du serveur afin de mixer le service de Surnoms et celui de “réplicats” ?

Partie RMI (1 séances encadrée)

Vous allez tester et appréhender la communication réseau par RMI

Ecrire le protocole d'application en RMI et implémenter un Client et un Serveur RMI pour au moins un des services.

Questions de recul – A rendre

Quelles parties des codes Sockets se rapprochent le plus des stubs ?

Comment la réflexivité Java peut être utilisée pour générer (ou remplacer) les stubs ?

RENDUS

à envoyer par email à votre responsable de TP au plus tard 48H avant le TP suivant avec pour Sujet du mail INTERNET ET RESEAUX – Rendu no de rendu. Prenez soin d’ajouter les noms des Binomes au nom de vos fichiers (exemple: RenduNo1LitoDery.doc).

Rendu no 1 : Le fichier protocoleDApplicationAuDessusDeTCP.txt en Semaine 2 (entre la deuxième et la troisième séance)

Rendu no 2 : Le fichier protocoleDApplicationAuDessusDeTCP.txt + la réponse aux questions de recul avec les codes pour illustrer les réponses en Semaine 5 (entre la cinquième séance et la sixième séance)

Rendu no 3 : Un fichier RMI.txt expliquant le déploiement pour un client (comparez avec le déploiement Socket) + les questions de recul en semaine 6 (entre la sixième semaine et l’exam)

Annales

2011_2012/si4/internetetreseau/start.txt · Dernière modification: 2012/12/12 09:06 par faron
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0