:: Enseignements :: Master :: M1 :: 2015-2016 :: Programmation d'applications réseaux ::
[LOGO]

Multicast UDP


Exercice 1 - Chat Multicast

Le but du l'exercice est d'écrire une application de chat en utilisant une adresse multicast commune à tous les clients. Un client est lancé avec un pseudo, une adresse multicast (IP+port) et une interface réseau.
$ java MulticastChat Charlie 239.252.0.100 7777 eth0

Si vous êtes sur votre portable, vous ne pourrez pas communiquer avec les autres clients. Vous pouvez tester en local en lançant plusieurs clients.
$ java MulticastChat Alice 239.252.0.100 7777 lo0
$ java MulticastChat Bob 239.252.0.100 7777 lo0

Les paquets envoyés et recus sur cette adresse contiendront un pseudo et un message. Le format est le suivant:
  1. un INT donnant la taille du pseudo
  2. le pseudo encodé en UTF-8
  3. le message encodé en UTF-8
L'ensemble du paquet ne pourra pas dépaser la taille de 512 octets.
+--------------+------------------+--------------------------+
| taillePseudo |   Pseudo UTF-8   |       Message UTF-8      |
+--------------+------------------+--------------------------+
       

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.

L'application affichera sur la sortie standard tout ce qui est reçu sur ce groupe de multicast à destination de ce port sous la forme "pseudo: message". Il vous faut donc 2 threads.

Le code ci-après vous montre comment configurer une DatagramChannel pour la réception mutlicast. Vous voyez que la configuration demande de préciser l'interface réseau sur laquelle la communication aura lieu.