2 * Copyright 2010, Atis Elsts, the.kfx@gmail.com
3 * Distributed under the terms of the MIT license.
9 #include <netinet/in.h>
10 #include <netinet/ip.h>
11 #include <arpa/inet.h>
17 const unsigned short TEST_PORT
= 40000;
25 sockaddr_storage address
;
26 socklen_t socklen
= sizeof(address
);
27 memset(&address
, 0, socklen
);
29 int status
= recvfrom(fd
, buffer
, sizeof(buffer
) - 1, 0,
30 (sockaddr
*) &address
, &socklen
);
36 printf("received EOF!\n");
40 printf("received %d bytes: \"%s\"\n", status
, buffer
);
47 main(int argc
, char *argv
[])
49 int socketFamily
= AF_INET
;
52 if (!strcmp(argv
[1], "-4"))
53 socketFamily
= AF_INET
;
54 else if (!strcmp(argv
[1], "-6"))
55 socketFamily
= AF_INET6
;
58 int fd
= socket(socketFamily
, SOCK_DGRAM
, 0);
64 sockaddr_storage localAddress
;
65 memset(&localAddress
, 0, sizeof(localAddress
));
66 if (socketFamily
== AF_INET
) {
67 sockaddr_in
*sa
= (sockaddr_in
*) &localAddress
;
68 sa
->sin_family
= AF_INET
;
69 sa
->sin_port
= htons(TEST_PORT
);
71 sockaddr_in6
*sa
= (sockaddr_in6
*) &localAddress
;
72 sa
->sin6_family
= AF_INET6
;
73 sa
->sin6_port
= htons(TEST_PORT
);
75 sa
->sin6_addr
.s6_addr
[15] = 0x01;
78 if (bind(fd
, (sockaddr
*)&localAddress
, socketFamily
== AF_INET
?
79 sizeof(sockaddr_in
) : sizeof(sockaddr_in6
)) < 0) {