#include #include #include #define LISTEN_ADDR INADDR_ANY #define LISTEN_PORT 5004 #define MULITCAST_ADDR "233.3.18.66" int main(int argc, char **argv) { int sock; struct sockaddr_in sin; struct ip_mreq mreq; WSADATA wsadata; char buffer[256]; int len; WSAStartup(MAKEWORD(2, 2), &wsadata); if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) != -1) { printf("Created socket\n"); memset(&sin, 0, sizeof(sin)); sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons(LISTEN_PORT); sin.sin_family = AF_INET; if (bind(sock, (struct sockaddr *) &sin, sizeof(struct sockaddr)) != -1) { printf("Bound\r\n"); mreq.imr_multiaddr.s_addr = inet_addr(MULITCAST_ADDR); mreq.imr_interface.s_addr = INADDR_ANY; if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mreq, sizeof(mreq)) != -1) { while (1) { len = recvfrom(sock, buffer, sizeof(buffer), 0, NULL, NULL); printf("%i\r\n", len); } } else { printf("err\\mreq\r\n"); } } else { printf("err\\bind\r\n"); } } else { printf("err\\socket\r\n"); } system("pause"); return (0); }