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 <arpa/inet.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <time.h>
|
#include <sys/time.h>
|
||||||
|
|
||||||
void print_err(const char *format, ...)
|
void print_err(const char *format, ...)
|
||||||
{
|
{
|
||||||
@ -155,15 +155,30 @@ int main(int ac, char **av)
|
|||||||
dest.sin_port = htons(0);
|
dest.sin_port = htons(0);
|
||||||
inet_pton(AF_INET, "8.8.8.8", &dest.sin_addr);
|
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) {
|
while (1) {
|
||||||
|
|
||||||
char *packet = create_packet(payload_size);
|
struct timeval stop, start;
|
||||||
if (packet == NULL)
|
|
||||||
{
|
|
||||||
close(sockfd);
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
gettimeofday(&start, NULL);
|
||||||
if (sendto(sockfd, packet, packet_size, 0, (struct sockaddr *) &dest, sizeof(dest)) == -1)
|
if (sendto(sockfd, packet, packet_size, 0, (struct sockaddr *) &dest, sizeof(dest)) == -1)
|
||||||
{
|
{
|
||||||
print_err("error: send packet failed.");
|
print_err("error: send packet failed.");
|
||||||
@ -173,18 +188,6 @@ int main(int ac, char **av)
|
|||||||
}
|
}
|
||||||
printf("icmp request sent\n");
|
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
|
do
|
||||||
{
|
{
|
||||||
if (recvfrom(sockfd, buffer, packet_size, 0, (struct sockaddr *) &sender, &len) < 0)
|
if (recvfrom(sockfd, buffer, packet_size, 0, (struct sockaddr *) &sender, &len) < 0)
|
||||||
@ -195,10 +198,17 @@ int main(int ac, char **av)
|
|||||||
free(packet);
|
free(packet);
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
gettimeofday(&stop, NULL);
|
||||||
}
|
}
|
||||||
while (len == packet_size && packet_check(buffer, packet_size) == 0 && pktcmp(packet, buffer, packet_size) == 0);
|
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);
|
sleep(1);
|
||||||
|
|
||||||
|
update_packet(packet, payload_size);
|
||||||
}
|
}
|
||||||
|
free(packet);
|
||||||
|
free(buffer);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user