Université Pierre et Marie Curie Master 2016 2017
PR : Travaux sur Machine 9. Socket et multi-diffusion

Cette séance étudie l’usage de socket en mode Multi-cast et Broad-cast, à l’aide de la fonction setsockopt. Les arguments des tests donnés dans le Makefile habituel ne sont pas forcément adaptés à votre environnement, il faudra éventuellement les modifier.



1 Sonar

On cherche à créer une application qui permet, à la manière d’un sonar, de repérer tous les nœuds disponibles sur le réseau local. Un programme sonar diffuse toutes les 3 secondes un message "PING" en mode Broadcast sur le port 9999, puis attend en réponse un message "PONG" des sites disponibles et affiche leur identité. Le sonar comporte deux Threads : un qui attend les réponses sur le port 9999, et un autre qui s’occupe de la diffusion. De leurs côtés, les nœuds disponibles exécutent le programme Ponger qui attend l’arrivée de messages sur le port de diffusion, et renvoie à l’émetteur de tout "PING" un message "PONG".

N.B : Pour obtenir l’adresse valide de Broadcast sur votre sous-réseau, utilisez la valeur INADDR_BROADCAST.

Exemple d'appel :
$PWD/bin/sonar
Fichier à créer : src/sonar.c

2 Messagerie instantanée groupée

Réalisez un programme qui permet d’échanger des messages ligne par ligne avec d’autres processus en communiquant par Multicast. Le programme prend sur la ligne de commande :

  1. l’adresse IP Multicast où la conversation a lieu ;
  2. le numéro du port sur lequel la conversation a lieu
  3. le nom (ou pseudonyme) utilisé dans la conversation

Une fois lancé, le programme affiche tous les messages envoyés par d’autres utilisateurs et permet parallèlement d’envoyer des messages pour participer à la conversation. Il utilisera un Thread pour écrire et un autre pour lire.

Exemple d'appel :
$PWD/bin/mychat 225.0.0.10 2001 $USER
Fichier à créer : src/mychat.c

3 Annexes


makefile
Format de l'envoi : src/sonar.c
Répertoires autorisés : src/mychat.c