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 <arpa/inet.h>
16 const unsigned short TEST_PORT
= 40000;
20 main(int argc
, char *argv
[])
22 int socketFamily
= AF_INET
;
25 if (!strcmp(argv
[1], "-4"))
26 socketFamily
= AF_INET
;
27 else if (!strcmp(argv
[1], "-6"))
28 socketFamily
= AF_INET6
;
31 int fd
= socket(socketFamily
, SOCK_DGRAM
, 0);
37 sockaddr_storage saddr
;
38 memset(&saddr
, 0, sizeof(saddr
));
39 if (socketFamily
== AF_INET
) {
40 sockaddr_in
*sa
= (sockaddr_in
*) &saddr
;
41 sa
->sin_family
= AF_INET
;
42 sa
->sin_port
= htons(TEST_PORT
);
43 sa
->sin_addr
.s_addr
= htonl(INADDR_LOOPBACK
);
45 sockaddr_in6
*sa
= (sockaddr_in6
*) &saddr
;
46 sa
->sin6_family
= AF_INET6
;
47 sa
->sin6_port
= htons(TEST_PORT
);
48 sa
->sin6_addr
.s6_addr
[15] = 0x01; // loopback
51 // sa->sin6_addr.s6_addr[0] = 0x20;
52 // sa->sin6_addr.s6_addr[1] = 0x01;
53 // sa->sin6_addr.s6_addr[15] = 0x01;
56 const char *buffer
= "hello world";
57 unsigned length
= strlen(buffer
);
58 int status
= sendto(fd
, buffer
, length
, 0, (sockaddr
*) &saddr
,
59 socketFamily
== AF_INET
? sizeof(sockaddr_in
) : sizeof(sockaddr_in6
));
60 if (status
< length
) {
64 printf("no data sent!\n");
66 printf("not all data sent!\n");
68 printf("send(): success\n");