From d519c0b3174fbd225e62eefe7f4690a0cdca579c Mon Sep 17 00:00:00 2001 From: Adrian Bondrescu Date: Fri, 1 Jun 2012 00:29:12 +0300 Subject: [PATCH] The UDP client is now working and it measures the time needed for sending 10k datagrams. --- test/client_udp.c | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/test/client_udp.c b/test/client_udp.c index 71a5f22..85aab05 100644 --- a/test/client_udp.c +++ b/test/client_udp.c @@ -8,23 +8,10 @@ #include #include -#define ADDR 0x8082A8C0 -#define DADDR 0x8082A8C0 - -int gen_port() -{ - int ret; - srand(time(NULL)); - ret = (rand() % 255) + 1; - if (ret == 100 || ret == 101) - ret *= 2; - printf("Generated source port %d\n", ret); - return ret; -} - int main(int argc, const char *argv[]) { int sock; + int i; sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sock < 0) { @@ -35,8 +22,8 @@ int main(int argc, const char *argv[]) struct sockaddr_in saddr; memset(&saddr, 0, sizeof(saddr)); - saddr.sin_addr.s_addr = ADDR; - saddr.sin_port = gen_port(); + inet_pton(AF_INET, "192.168.130.128", &saddr.sin_addr.s_addr); + saddr.sin_port = 0; saddr.sin_family = AF_INET; if (bind(sock, (struct sockaddr *) &saddr, sizeof(saddr)) < 0) { @@ -58,8 +45,8 @@ int main(int argc, const char *argv[]) iov[0].iov_base = buf; iov[0].iov_len = sizeof(buf); - to.sin_addr.s_addr = DADDR; - to.sin_port = 100; + inet_pton(AF_INET, "192.168.130.129", &to.sin_addr.s_addr); + to.sin_port = htons(100); to.sin_family = AF_INET; msg.msg_iov = iov; @@ -69,13 +56,18 @@ int main(int argc, const char *argv[]) int ret; - ret = sendmsg(sock, &msg, sizeof(msg)); - if (ret < 0) { - perror("Failed to send on socket"); - return -1; - } - - printf("Sent %d bytes on socket\n", msg.msg_namelen); + struct timeval tv1, tv2; + gettimeofday(&tv1, NULL); + for (i = 0; i < 10000; i++) { + ret = sendmsg(sock, &msg, 0); + if (ret < 0) { + perror("Failed to send on socket"); + return -1; + } + } + gettimeofday(&tv2, NULL); + + printf("diff=%ld\n", (tv2.tv_sec - tv1.tv_sec) * 1000 + (tv2.tv_usec - tv1.tv_usec) / 1000); if (close(sock) < 0) { perror("Failed to close socket"); -- 2.20.1