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

Serveurs TCP, implémentations de la concurrence


Exercice 1 - Serveur Somme de Long itératif

On souhaite maintenant écrire notre propre classe qui implante un serveur TCP rendant le service de somme de long, tel que vu au TP précédent:
  • le client envoie un INT (en big endian) donnant le nombre d'opérandes puis chacun des opérandes qui sont des LONG en big endian;
  • le serveur répond par un LONG qui correspond à la somme des opérandes.
  • Le serveur ne ferme pas la connection qui peut donc être utilisée pour faire plusieurs sommes pendant la même connexion cliente.
La première version de ce serveur, IterativeLongSumServer, un peu simpliste, se contente d'accepter un client, de traiter ses requêtes (éventuellement plusieurs sommes), et lorsque la connexion est fermée, il accepte un client suivant, et ainsi de suite.

Pour écrire ce serveur, vous vous baserez sur la trame ci-dessous.

Il se lance par exemple avec java fr.upem.net.tcp.IterativeLongSumServer 7777

Testez le avec votre client du TP précédent: java fr.upem.net.tcp.ClientLongSum localhost 7777

Que se passe-t-il si deux clients tentent d'accéder au service simultanément?
Le client arrivé en second est il connecté? accepté? servi?
Est-ce que le comportement est le même qu'en UDP?

Exercice 2 - Serveur Somme de Long concurrents

On veut maintenant permettre à plusieurs clients d'être servis simultanément par le serveur. Pour cela, nous allons devoir créer plusieurs threads.