:: Enseignements :: ESIPE :: E4INFO :: 2009-2010 :: Java Réseau II - Applications réseaux ::
[LOGO]

TCP via 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 et utilisant les canaux (Channel) 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 ! Attention un read sur un canal ne lit pas forcement une ligne entière...
    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 utilisant les NIO pour votre serveur. Vous ferez attention aux problèmes d'encodage.

Exercice 3 - Relai TCP concurrent (proxy)

Ecrire un programme relayant un flot entre un client et un serveur. Votre relai 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 server et client des exercices 1 et 2.