xref: /haiku/src/tests/system/network/multicast/multicast.cpp (revision 5e54f6d4f9dd607ae2afcea4fe72f2f1763e4b5e)
1*5e54f6d4SAugustin Cavalier /*
2*5e54f6d4SAugustin Cavalier  * Copyright 2007, Haiku, Inc. All Rights Reserved.
3*5e54f6d4SAugustin Cavalier  * Distributed under the terms of the MIT License.
4*5e54f6d4SAugustin Cavalier  *
5*5e54f6d4SAugustin Cavalier  * Authors:
6*5e54f6d4SAugustin Cavalier  *      Hugo Santos, hugosantos@gmail.com
7*5e54f6d4SAugustin Cavalier  */
8*5e54f6d4SAugustin Cavalier 
9*5e54f6d4SAugustin Cavalier #include <string.h>
10*5e54f6d4SAugustin Cavalier 
11*5e54f6d4SAugustin Cavalier #include <arpa/inet.h>
12*5e54f6d4SAugustin Cavalier #include <netinet/in.h>
13*5e54f6d4SAugustin Cavalier #include <sys/socket.h>
14*5e54f6d4SAugustin Cavalier 
main(int argc,char * argv[])15*5e54f6d4SAugustin Cavalier int main(int argc, char *argv[])
16*5e54f6d4SAugustin Cavalier {
17*5e54f6d4SAugustin Cavalier 	char buf[256];
18*5e54f6d4SAugustin Cavalier 
19*5e54f6d4SAugustin Cavalier 	int sock = socket(AF_INET, SOCK_DGRAM, 0);
20*5e54f6d4SAugustin Cavalier 
21*5e54f6d4SAugustin Cavalier 	sockaddr_in sin;
22*5e54f6d4SAugustin Cavalier 	memset(&sin, 0, sizeof(sin));
23*5e54f6d4SAugustin Cavalier 	sin.sin_family = AF_INET;
24*5e54f6d4SAugustin Cavalier 	sin.sin_port = htons(12345);
25*5e54f6d4SAugustin Cavalier 
26*5e54f6d4SAugustin Cavalier 	bind(sock, (sockaddr *)&sin, sizeof(sin));
27*5e54f6d4SAugustin Cavalier 
28*5e54f6d4SAugustin Cavalier 	ip_mreq mreq;
29*5e54f6d4SAugustin Cavalier 	memset(&mreq, 0, sizeof(mreq));
30*5e54f6d4SAugustin Cavalier 
31*5e54f6d4SAugustin Cavalier 	inet_pton(AF_INET, argv[1], &mreq.imr_multiaddr);
32*5e54f6d4SAugustin Cavalier 
33*5e54f6d4SAugustin Cavalier 	setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
34*5e54f6d4SAugustin Cavalier 
35*5e54f6d4SAugustin Cavalier 	while (1) {
36*5e54f6d4SAugustin Cavalier 		int len = recv(sock, buf, sizeof(buf), 0);
37*5e54f6d4SAugustin Cavalier 	}
38*5e54f6d4SAugustin Cavalier 
39*5e54f6d4SAugustin Cavalier 	return 0;
40*5e54f6d4SAugustin Cavalier }
41*5e54f6d4SAugustin Cavalier 
42