OS : Linux

Bonjour,

J'ai écrit un serveur multicast, en me basant sur des exemples trouvés sur le net, en c++ sur linux, j'initialise le socket de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
    /*
     * initialisation du socket d'emission
     */
    memset(&sock_w, 0, sizeof(sock_w));
    sock_w.sin_family = AF_INET;
    sock_w.sin_port = htons(PORT);
    sock_w.sin_addr.s_addr = inet_addr(GROUP);
Dans GROUP, je met la valeur 224.0.0.1 (J'ai choisi l'IP en fonction de ceci : 224.0.0.0 -> 224.0.0.255 link-local multicast addresses
(for machines connected at the lowest level of topology)) et le port 33600 par exemple, ensuite
avec un client je récupérre les données envoyées...
Voici l'initialisation du client :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
    /*
     * initialisation du socket de reception
     */
    memset(&sock_r, 0, sizeof(sock_r));
    sock_r.sin_family = AF_INET;
    sock_r.sin_port = htons(PORT);
    sock_r.sin_addr.s_addr = htonl(INADDR_ANY);
Du côté serveur, j'utilise également un configuration de TTL à 1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
unsigned char ttl = 1;
 
    setsockopt(sdw, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl));
Ce que j'aimerais faire c'est diffuser uniquement sur une interface réseau spécifique ; eth0 ou eth1...
Par contre je ne sais pas du tout comment faire pour canaliser tout ces message dans l'interface...

En effet, qu'elle group ip faudrait-il utiliser et comment le définir, faut-il fixer le TTL avec une autre valeur ?
Il y a pas mal de configurations os il me semble...

S'agit-il d'un style de configuration comme ceci (trouvé sur le web):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
Ou l'IP broadcast 192.168.1.255 devrait-être utilisé afin de destiner les messages à cette interface ?
Dans ce cas uniquement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
    /*
     * initialisation du d'emission
     */
    memset(&sock_w, 0, sizeof(sock_w));
    sock_w.sin_family = AF_INET;
    sock_w.sin_port = htons(PORT);
    sock_w.sin_addr.s_addr = inet_addr("192.168.1.255");
D'avance merci pour vos lumières ;-),