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;
22 printf("client [tcp|udp] [4|6] [4|6]\n");
28 main(int argc
, char *argv
[])
30 int socketType
= SOCK_DGRAM
;
31 int socketFamily1
= AF_INET
;
32 int socketFamily2
= AF_INET
;
35 if (!strcmp(argv
[1], "tcp"))
36 socketType
= SOCK_STREAM
;
37 else if (!strcmp(argv
[1], "udp"))
38 socketType
= SOCK_DGRAM
;
43 switch (atoi(argv
[2])) {
45 socketFamily1
= AF_INET
;
48 socketFamily1
= AF_INET6
;
55 switch (atoi(argv
[3])) {
57 socketFamily2
= AF_INET
;
60 socketFamily2
= AF_INET6
;
67 int fd
= socket(socketFamily1
, socketType
, 0);
73 sockaddr_storage saddr
;
74 memset(&saddr
, 0, sizeof(saddr
));
75 saddr
.ss_family
= socketFamily2
;
76 ((sockaddr_in
*) &saddr
)->sin_port
= htons(TEST_PORT
);
77 if (connect(fd
, (sockaddr
*) &saddr
, socketFamily2
== AF_INET
?
78 sizeof(sockaddr_in
) : sizeof(sockaddr_in6
)) < 0) {
84 const char *buffer
= "hello world";
85 unsigned length
= strlen(buffer
);
86 int status
= send(fd
, buffer
, length
, 0);
87 if (status
< length
) {
91 printf("no data sent!\n");
93 printf("not all data sent!\n");
95 printf("send(): success\n");