:: Enseignements :: ESIPE :: E4INFO :: 2013-2014 :: Applications réseaux ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) |
TCP non bloquant
|
Exercice 1 - Serveur Echo Plus
On souhaite rajouter quelques fonctionnalités au serveur Echo de l'exercise précédent. Vous pouvez partir du serveur ci-dessous ou bien du serveur que vous avez réalisé à la séance précédente.
-
On souhaite que le serveur coupe automatiquement les connections sur lesquelles aucune donnée n'a été lue depuis un certain temps (par exemple 1 minute).
L'idée est de stocker dans l'attachement
un long qui correspondra la date en millisecondes (System.currentMilliTime()) à laquelle la dernière lecture sur la connection à eu lieu. La date est mise à jour dans la méthode doRead
Dans la boucle de sélection (cf. la méthode launch), on va à chaque passage de boucle parcourir l'ensemble de toutes les clés enregistrées et
fermées toutes les connections dont la date est expirée. Attention, il faut parcourir l'ensemble des clés enregistrées (cf. selector.keys()) et pas celui des clés sélectionnées.
Attention, en parcourant l'ensemble des clés, vous allez passer sur la clé de la ServerSocketChannel. On peut facilement la distinguer car son attachment vaut null.
Si rien ne se passe sur le serveur, il reste bloqué dans l'appel à la méthode
selector.select(). On peut passer un timeout en millisecondes. Vous pouvez prendre 1/10 du timeout pour les clients.
-
On veut rajouter une console au serveur. Cette console répondra à deux commandes:
- INFO qui affichera le nombre de client connectés, le nombre de clients qui ont été traités sans erreur par le serveur depuis son lancement,
le nombre de clients qui ont été traités avec une erreur depuis son lancement et le nombre de clients qui ont été déconnectés suite à un timeout depuis le lancement.
- SHUTDOWN qui fermera proprement le serveur.
Exercice 2 - Serveur Long Sum
Ecrivez un serveur non-bloquant pour le protocole long somme de longs que nous avons vu dans les TPs précédents. Le client envoie un INT avec le nombre d'opérandes puis chacunes des opérandes qui sont des LONGs. Le serveur renvoie
la somme de toutes les opérandes recues.
Exercice 3 - Serveur de transcodage
Ecrivez un serveur non-bloquant qui prend en paramètres sur la ligne de commande deux noms de charsets : le charset d'entrée et le charset de sortie.
Le serveur décode le flux d'entrée dans le charset d'entrée et le renvoie encodé dans le charset de sortie.
Votre serveur sera lancé par exemple avec:
$ java fr.upem.tcp.ServerTranscode utf-8 latin1
© Université de Marne-la-Vallée