:: Enseignements :: Master :: M1 :: 2013-2014 :: Programmation d'applications réseaux ::
[LOGO]

Client/serveur UDP, représentation des données numériques


Exercice 1 - Longue Somme de Long (un client)

On souhaite mettre en place une sorte de calculette permettant à un client de demander à un serveur le résultat de la somme de plusieurs nombres qui sont des entiers long (sur 64 bits).

Le "protocole" convenu établit que pour cela, le client doit envoyer chaque opérande, un par un, en binaire représenté dans la convention "network order" (i.e. big endian -- l'octet de poids fort est enregistré à l'adresse mémoire la plus petite). Le résultat de la somme totale sera renvoyé par le serveur à la fin de la réception des opérandes, qui est signalée par la première opérande nulle (i.e. 0) reçue du client.

Exercice 2 - Longue Somme de Long (plusieurs clients)

Exercice 3 - Forum de discussion Multicast

Écrire une application qui envoie sur un port donné d'un groupe de multicast correspondant à une adresse IP donnée, tout ce qui est écrit sur l'entrée standard. L'application affichera sur la sortie standard tout ce qui est reçu sur ce groupe de multicast à destination de ce port (il vous faut donc 2 threads). On considérera que les messages textuels sont transmis en UTF-8 et que leur représentation ne peut dépasser 512 octets.

En utilisant tous ce même numéro de port et la même adresse IP, vous pouvez obtenir une version basique d'un forum de discussion.

Attention: dans le cadre de l'utilisation du multicast dans les salles de TP de l'université, il ne faut pas utiliser n'importe quelle adresse de multicast (certaines sont utilisées pour des annonces ou du routage). Vous pouvez regarder pour plus de détail l'URL http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml#multicast-addresses-13. Limitez vous à l'utilisation des adresses dans la plage 239.252.0.0 - 239.255.255.255. Par ailleurs, ne changez pas le TTL qui doit être à 1 par défaut.

Par exemple, pour éviter des interférences entre les groupes, choisissez 239.252.0.x:7777x est le numéro de votre salle.

Lorsque plusieurs applications tournent sur la même machine, comment savoir laquelle a envoyé un message? Mettez en œuvre une solution qui réponde à cette question.

Que doit-on faire lorsque l'utilisateur de votre application ferme le flot de saisie des entrées (en tapant Control-D pour fermer System.in par exemple)? Mettez en œuvre une solution qui réponde à cette question.

Comment faire pour que la réception d'un paquet qui encode la chaîne de caractères "BYE!" provoque la fermeture "propre" de la socket, des threads et de l'application.