4 #include <sys/socket.h>
5 #include <netinet/in.h>
6 #include <netinet/ip.h>
9 // #define NETWORK "233.121.29.%d" // workzone
10 // #define NETWORK "233.83.45.%d" // nrk [tomt]
11 // #define NETWORK "233.60.200.%d" // comvie [tomt]
12 // #define NETWORK "239.193.0.%d" // uninett??
13 // #define NETWORK "233.155.107.%d" // tv2
14 #define NETWORK "224.67.163.%d" // blokk med stortinget i
16 void join_group(int sock, int i)
20 // snprintf(buf, 256, NETWORK, i);
21 // printf("%s\n", buf);
22 //mreq.imr_multiaddr.s_addr = inet_addr(buf);
24 mreq.imr_multiaddr.s_addr = i;
25 printf("%s\n", inet_ntoa(mreq.imr_multiaddr));
26 mreq.imr_address.s_addr = INADDR_ANY;
28 setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
31 void leave_group(int sock, int i)
35 // snprintf(buf, 256, NETWORK, i);
36 // mreq.imr_multiaddr.s_addr = inet_addr(buf);
37 mreq.imr_multiaddr.s_addr = i;
38 mreq.imr_address.s_addr = INADDR_ANY;
40 setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq));
43 int main(int argc, char **argv)
45 int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
46 in_addr_t from = inet_addr(argv[1]);
47 in_addr_t to = inet_addr(argv[2]);
48 uint32_t skip = atoi(argv[3]);
50 for (in_addr_t i = ntohl(from); i <= ntohl(to); i += skip) {
51 join_group(sock, htonl(i));
52 if (i - ntohl(from) >= 10 * skip) {
53 leave_group(sock, htonl(i - 10 * skip));