Ignore test executables
[swifty.git] / test / client_udp.c
1 #include <sys/socket.h>
2 #include <sys/types.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include <netinet/in.h>
6 #include <stdlib.h>
7 #include <time.h>
8
9 int main(int argc, const char *argv[])
10 {
11     int sock;
12         int i;
13
14     sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
15     if (sock < 0) {
16         perror("Failed to create socket");
17         return -1;
18     }
19
20         struct sockaddr_in saddr;
21     memset(&saddr, 0, sizeof(saddr));
22
23         inet_pton(AF_INET, "192.168.130.128", &saddr.sin_addr.s_addr);
24         saddr.sin_port = 0;
25         saddr.sin_family = AF_INET;
26
27     if (bind(sock, (struct sockaddr *) &saddr, sizeof(saddr)) < 0) {
28         perror("Failed to bind socket");
29         close(sock);
30         return -1;
31     }
32
33     char buf[4096];
34         sprintf(buf, "Buffer");
35     struct iovec iov[1];
36     struct msghdr msg;
37     struct sockaddr_in to;
38
39     memset(&msg, 0, sizeof(msg));
40     memset(&iov, 0, sizeof(iov));
41     memset(&to, 0, sizeof(to));
42
43     iov[0].iov_base = buf;
44     iov[0].iov_len = sizeof(buf);
45
46         inet_pton(AF_INET, "192.168.130.129", &to.sin_addr.s_addr);
47         to.sin_port = htons(100);
48         to.sin_family = AF_INET;
49
50     msg.msg_iov = iov;
51     msg.msg_iovlen = 1;
52     msg.msg_name = &to;
53     msg.msg_namelen = sizeof(to);
54
55     int ret;
56
57         struct timeval tv1, tv2;
58         gettimeofday(&tv1, NULL);
59         for (i = 0; i < 10000; i++) {
60                 ret = sendmsg(sock, &msg, 0);
61                 if (ret < 0) {
62                         perror("Failed to send on socket");
63                         return -1;
64                 }
65         }
66         gettimeofday(&tv2, NULL);
67
68         printf("diff=%ld\n", (tv2.tv_sec - tv1.tv_sec) * 1000 + (tv2.tv_usec - tv1.tv_usec) / 1000);
69
70     if (close(sock) < 0) {
71         perror("Failed to close socket");
72         return -1;
73     }
74
75     return 0;
76 }