:: Enseignements :: ESIPE :: E4INFO :: 2012-2013 :: Applications réseaux ::
[LOGO]

TCP en NIO bloquant


Exercice 1 - Longue somme de longs TCP en NIO

Récupérez le serveur LongSumServer.jar, qui prend en argument le port sur lequel il attend les connexions de clients et le nombre de clients qu'il est capable de servir simultanément. Par exemple, lancez-le sur votre machine par
% java -jar LongSumServer.jar 7777 2 
Ce serveur, lorsqu'il accepte un client, lit des long en provenance de ce client. Il maintient à jour deux valeurs pour chaque client connecté: le nombre d'opérandes (un int) et la somme de ces opérandes (un long). A chaque fois qu'il reçoit une nouvelle opérande, il renvoit au client ces deux valeurs: 4 octets pour le nombre d'opérandes suivis de 8 octets pour la somme. Dans les deux sens de communication, les entiers sont transmis en BigEndian. Le serveur, lorsqu'il reçoit l'opérande 0, met fin à la communication avec le client.

  1. Développez un client, LongSumClient, qui prend en argument l'adresse et le port du serveur. Ce client lit des long au clavier qu'il envoie au serveur jusqu'à ce qu'il lise 0. Lorsque la valeur 0 est lue au clavier, le client l'envoit au serveur et attend sa réponse avant de quitter l'application.

  2. Testez ensuite votre client en lançant le serveur de cette manière
    % java -jar LongSumServer.jar 7777 2 lag 
    
    où la présence du 3ème argument segmente artificiellement les réponses du serveur. Que ce passe-t-il. Corrigez éventuellement votre client pour qu'il résiste à ces retards de réponse.
  3. Développez votre propre serveur LongSumServer répondant aux même fonctionnalités que le jar fourni.