#include #include #include int main(int argc, char **argv) { struct sockaddr_in addr; int addr_len; struct ip_mreq req; int sock; char msg[256]; memset(&addr, 0, sizeof(addr)); if (argc < 3) { printf("Usage: \n"); return 1; } sock = socket(AF_INET, SOCK_DGRAM, 0); addr.sin_family = AF_INET; addr.sin_port = htons(2000); if (bind(sock, (struct sockaddr *)&addr, sizeof(addr))) { perror("bind"); return 1; } inet_aton(argv[1], &req.imr_interface); inet_aton(argv[2], &req.imr_multiaddr); if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &req, sizeof(req))) { perror("setsockopt"); return 1; } recvfrom(sock, msg, sizeof(msg), 0, (struct sockaddr *)&addr, &addr_len); printf("Message recieved: %s", msg); close (socket); return 0; }