see my first receiver .. 192.168.2.72
client1.c
Code:
#define HELLO_GROUP = "226.0.1.32"
saddr.sin_family = PF_INET;
saddr.sin_port = htons(4096); // listen on port 4096
saddr.sin_addr.s_addr = htonl(INADDR_ANY);
status = bind(sock, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in));
imreq.imr_multiaddr.s_addr = inet_addr(HELLO_GROUP);
imreq.imr_interface.s_addr = inet_addr("192.168.2.72"); // use second interface
// JOIN multicast group on second interface
status = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP,
(const void *)&imreq, sizeof(struct ip_mreq));
my second receiver ... 192.168.1.68
client2.c
Code:
saddr.sin_family = PF_INET;
saddr.sin_port = htons(4096); // listen on port 4096
saddr.sin_addr.s_addr = htonl(INADDR_ANY); // bind socket to any interface
status = bind(sock, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in));
imreq.imr_multiaddr.s_addr = inet_addr("226.0.1.32");
imreq.imr_interface.s_addr = INADDR_ANY; // use DEFAULT interface
// JOIN multicast group on default interface
status = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP,
(const void *)&imreq, sizeof(struct ip_mreq));
see here only client1 is receiving multicast dgrams .... i am specifying the group of same class D IP .. for both client1.c and client2.c .. but only client1.c where receiving interface is 192.168.2.72(...2.72) can receive ...
please help