From e67dcbb34b194f55085b891ba942160b6a5ceb48 Mon Sep 17 00:00:00 2001 From: starnakin Date: Wed, 29 Oct 2025 09:39:02 -0500 Subject: [PATCH] add: time display --- src/main.c | 52 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/src/main.c b/src/main.c index 8501af8..077afba 100644 --- a/src/main.c +++ b/src/main.c @@ -11,7 +11,7 @@ #include #include #include -#include +#include void print_err(const char *format, ...) { @@ -155,15 +155,30 @@ int main(int ac, char **av) dest.sin_port = htons(0); inet_pton(AF_INET, "8.8.8.8", &dest.sin_addr); + char *packet = create_packet(payload_size); + if (packet == NULL) + { + close(sockfd); + return 2; + } + + char *buffer; + buffer = malloc(packet_size * sizeof(char)); + if (buffer == NULL) + { + print_err("error: allocation failed."); + free(packet); + close(sockfd); + return 10; + } + struct sockaddr_in sender; + socklen_t len = sizeof(sender); + while (1) { - char *packet = create_packet(payload_size); - if (packet == NULL) - { - close(sockfd); - return 2; - } + struct timeval stop, start; + gettimeofday(&start, NULL); if (sendto(sockfd, packet, packet_size, 0, (struct sockaddr *) &dest, sizeof(dest)) == -1) { print_err("error: send packet failed."); @@ -173,18 +188,6 @@ int main(int ac, char **av) } printf("icmp request sent\n"); - char *buffer; - buffer = malloc(packet_size * sizeof(char)); - if (buffer == NULL) - { - print_err("error: allocation failed."); - free(packet); - close(sockfd); - return 10; - } - struct sockaddr_in sender; - socklen_t len = sizeof(sender); - do { if (recvfrom(sockfd, buffer, packet_size, 0, (struct sockaddr *) &sender, &len) < 0) @@ -195,10 +198,17 @@ int main(int ac, char **av) free(packet); return 3; } + gettimeofday(&stop, NULL); } while (len == packet_size && packet_check(buffer, packet_size) == 0 && pktcmp(packet, buffer, packet_size) == 0); - free(packet); - printf("icmp reply received\n"); + + double time_interval = ((stop.tv_sec - start.tv_sec) * 1000 + (stop.tv_usec - start.tv_usec)) / 1000; + printf("icmp reply received %fms\n", time_interval); + sleep(1); + + update_packet(packet, payload_size); } + free(packet); + free(buffer); } \ No newline at end of file