diff --git a/statistics.c b/statistics.c index 7fd49ee..0782e24 100644 --- a/statistics.c +++ b/statistics.c @@ -11,13 +11,14 @@ #include #include #include +#include #include "hping2.h" #include "globals.h" -void print_statistics(int signal_id) +void print_statistics(int signal_id) { - unsigned int lossrate=0; + uint32_t lossrate=0; uint32_t losspack=0; #if (defined OSTYPE_LINUX) && (!defined FORCE_LIBPCAP) close_sockpacket(sockpacket); @@ -26,20 +27,20 @@ void print_statistics(int signal_id) #endif /* OSTYPE_LINUX && !FORCE_LIBPCAP */ if (recv_pkt > 0){ - losspack=(recv_pkt!=sent_pkt)?(recv_pkt/sent_pkt):0; + losspack=recv_pkt/sent_pkt; lossrate = 100 - ((recv_pkt*100)/sent_pkt); }else{ - losspack=!sent_pkt?0:sent_pkt; - lossrate=!sent_pkt?0:100; + losspack=sent_pkt<0?0:sent_pkt; + lossrate=sent_pkt<0?0:100; } printf("\n--- %s 统计 ---\n", targetname); - printf("发送: %d|收到: %d|%d%% 丢包率|已丢弃 %d\n", sent_pkt, recv_pkt, lossrate,losspack); - if (out_of_sequence_pkt) + printf("发送: %d|收到: %d|%d%% 丢包率|已丢弃 %d\n", sent_pkt, recv_pkt, abs(lossrate),losspack); + if (out_of_sequence_pkt>0) printf("已收到 %d 个乱序数据包\n", out_of_sequence_pkt); if(dup_count>0){ - printf("重传了 %d 个数据包\n",dup_count); + printf("重复确认了 %d 个数据包\n",dup_count); } printf("==往返时间==\n最小:%.1f 毫秒\n平均: %.1f 毫秒\n最大:%.1f 毫秒\n", rtt_min, rtt_avg, rtt_max); diff --git a/waitpacket.c b/waitpacket.c index 59f97d7..cd401b4 100644 --- a/waitpacket.c +++ b/waitpacket.c @@ -220,7 +220,7 @@ log_ipv4(int status, int sequence) rel_id = relativize_id(sequence, &ip_id); else rel_id = 0; - printf("len=%d ip=%s ttl=%d %sid%s%d ", ip_size, inet_ntoa(src), + printf("len=%d ttl=%d %sid%s%d ", ip_size, ip->ttl, (ntohs(ip->frag_off) ? "DF " : ""), (rel_id ? "=+" : "="), ip_id); @@ -233,7 +233,7 @@ log_ipv6(int status, int sequence) { char tmp[1024]; - printf("len=%d ip=%s ttl=%d ", ip_size, inet_ntop(opt_af, &src6, tmp, sizeof(tmp)), + printf("len=%d ttl=%d ", ip_size, ip6->hoplimit); if (opt_verbose && !opt_quiet) printf("tc=%x flowlabel=%u\n", (ip6->tc1 << 4) | ip6->tc2, (ip6->flowlabel1 << 16) | ip6->flowlabel2); @@ -243,7 +243,7 @@ static void log_ip(int status, int sequence) { if(status == S_RECV){ - printf("[重传]DUP! "); + printf("[重复]DUP! "); dup_count++; } if(ip->version == 4) @@ -306,7 +306,7 @@ void log_traceroute(void *packet, int size, int icmp_code) log_icmp_timeexc(inet_ntop(opt_af, &src6, tmp, sizeof(tmp)), icmp_code); } if (retval != -1) - printf(" hoprtt=%.1f 毫秒", rtt); + printf(" hoprtt=%.1f ms", rtt); if (!opt_tr_keep_ttl) src_ttl++; putchar('\n'); @@ -340,7 +340,7 @@ int recv_icmp(void *packet, size_t size) status = rtt(&icmp_seq, 0, &ms_delay); log_ip(status, icmp_seq); - printf("icmp_seq=%d 往返时间=%.2f 毫秒\n", icmp_seq, ms_delay); + printf("icmp_seq=%d rtt=%.2f ms\n", icmp_seq, ms_delay); if (icmp->type == ICMP_TIMESTAMPREPLY) { if ((size - ICMPHDR_SIZE) >= 12) log_icmp_ts(packet+ICMPHDR_SIZE);