add: time display
This commit is contained in:
52
src/main.c
52
src/main.c
@ -11,7 +11,7 @@
|
||||
#include <arpa/inet.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user