:: Enseignements :: Master :: M1 :: 2010-2011 :: Programmation d'Applications Réseaux ::
[LOGO]

TCP par java.io, par java.nio. Concurrence.


Exercice 1 - Serveur de mise en majuscules TCP

  1. Ecrire un serveur TCP de mise en majuscule servant ses clients un par un, avec IO classiques (BufferedReader et BufferedWriter) et gérant l'encodage ISO-8859-1. Le serveur lit une ligne sur l'entrée, la met en majuscule et retourne le résultat au client. Le client annonce la fin de requête par une ligne ne contenant qu'un point. Attention, il peut aussi fermer brutalement la connexion !
    Vous pourrez tester votre serveur avec netcat.
  2. Que se passe t-il quand un client tente une connexion alors que le serveur est en cours de traitement d'un autre client ?
  3. Modifiez votre programme pour qu'il créé un nouveau processus léger pour chaque client à traiter. Critiquez votre programme.
  4. Corrigez votre programme en utilisant les services FixedTreadPool et CachedThreadPool de Executors. Constatez le bon fonctionnement de votre serveur en le connectant à plusieurs clients.

Exercice 2 - Coté client

Ecrire un client pour votre serveur. Votre client réalisera la saisie au clavier en utilisant les E/S classiques, mais la connexion au serveur est réalisée avec des canaux. Vous ferez attention aux problèmes d'encodage.

Exercice 3 - Relais TCP concurrent (proxy)

Ecrire un programme relayant un flot entre un client et un serveur. Votre relais devra traiter un seul client à la fois, et tout devra être réalisé en utilisant des canaux.
Le proxy est lancé sur une machine ProxyMachine en fournissant un numéro de port local (ProxyPort) ainsi que l'adresse de la socket distante du serveur auquel il doit relayer les données (RemoteMachine:RemotePort). Lorsque ProxyMachine reçoit sur son port ProxyPort une demande de connexion depuis un client, elle accepte cette connexion et doit à son tour demander l'établissement d'une connexion entre elle-même et le port RemotePort de RemoteMachine. Une fois ces deux connexions établies, le proxy crée et démarre deux processus légers chargés de relayer les informations circulant, d'une part, entre le client et la machine distante et, d'autre part, entre la machine distante et le client.
Vous pourrez tester votre proxy avec vos serveur et client des exercices 1 et 2.

Exercice 4 - Serveur TCP de mise en majuscules (à la maison)

Reprendre l'exercice 1 en utilisant exclusivement les canaux. Attention un read sur un canal ne lit pas forcément une ligne entière...