Bonjour,

je suis actuellement entrain de me casser la tête sur une application utilisant le protocole UDP pour l'envoi de paquets. En effet, le but de mon application serait de pouvoir joindre ou créer un groupe (sous-réseau) de plusieurs machines pouvant ensuite communiquer via le multicast.

Je sais pas si ma réflexion est correcte mais c'est cela qui m'empêche d'avancer.

// Mise en situation
Admettons que nous voulons créer une application où les machines sont liées à l'aide d'une adresse multicast (pour la communication) et où d'autres machines présentent sur un réseau local (pas lié au groupe mais dans le même réseau) pourrait alors rejoindre le groupe.

// Situation clair
Si un client veut rejoindre un serveur(groupe) via une liste des serveurs présent sur le réseau, il devra envoyer un message broadcast puis le serveur devra lui répondre en conséquence.

// Situation(bis) clair
Si le client sélectionne un des serveur celui-ci va alors lui envoyer l'adresse multicast du groupe de machine. Le client pourra alors se connecter au groupe via cette adresse multicast.

// Questions
- Au niveau de l'implémentation en C#, comment dois-je utiliser mes Socket UDP pour avoir à la fois une écoute de l'adresse de broadcast(coté serveur pour détecté les clients souhaitant rejoindre le groupe) mais aussi une écoute sur l'adresse virtuelle multicast(pour communiquer avec les machines du groupe) ?

- Dans ce cas je suis obligé de créer deux Socket non ?

J'ai fais quelques tests par exemple joindre mon socket à une adresse multicast et essayer de communiquer avec lui en envoyant un message broadcast (le socket ne reçoit aucun message).

D'après ce test je pourrais donc pas utiliser un seul socket parce que du moment que je lie un socket à une adresse multicast, je ne reçois plus de messages émis en broadcast.

Donc deux sockets un qui écoute le broadcast et qui envoie les infos du groupe au client et l'autre socket qui est uniquement lié au groupe.

Je voudrais surtout avoir un retour sur mon résonnement pour savoir si il est correcte où si je dois procéder autrement pour implémenter tout ça dans mon application.

Merci d'avance pour votre aide

Firepolo