#include #include #include #include #include #include #include #include #include #include #define _POSIX_C_SOURCE 1 int main(int argc, char *argv[]) { int s; struct sockaddr_in addr; int addrlen; unsigned char buf[16] = "012345678901234"; /* * INIT MULTICAST COMM */ if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP)) == -1) { fprintf(stderr, "serv: Multicast socket() open fail. %s\n", strerror(errno)); exit(EXIT_FAILURE); } memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(25000); addr.sin_addr.s_addr = htonl(INADDR_ANY); addrlen = sizeof(addr); if (bind(s, (struct sockaddr *) &addr, sizeof(addr)) == -1) { fprintf(stderr, "serv: Multicast bind() port fail. %s\n", strerror(errno)); exit(EXIT_FAILURE); } /* set up addr for multicast on mcast_group */ memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(25000); addr.sin_addr.s_addr = inet_addr("224.0.0.250"); addrlen = sizeof(addr); fprintf(stderr, "Start Loop\n"); for (;;) { sleep(1); fprintf(stderr, "Loop: %s\n", buf); if ((sendto(s, (const void *)&buf[0], sizeof(buf), 0, (struct sockaddr *) &addr, addrlen)) == -1) { fprintf(stderr, "serv: sendto() fail. %s", strerror(errno)); exit(EXIT_FAILURE); } } }