Я играл с libpcap и обнаружил странную вещь.
Одна часть вывода: "From: src_addr, To: dst_addr"
Если я печатаю с одним оператором, то есть printf ("From:% s, To:% s \ n", inet_ntoa (ip_hdr-> ip_src), inet_ntoa (ip_hdr-> ip_dst));Напечатанный dst_addr точно такой же, как напечатанный src_addr.Однако, когда я устанавливаю точку останова в этой строке и использую gdb для проверки значений, хранящихся в ip_src и ip_dst, они различаются.
Если записано в двух инструкциях, то есть printf ("From:% s,", inet_ntoa (ip_hdr-> ip_src));printf ("Кому:% s \ n", inet_ntoa (ip_hdr-> ip_dst));Затем проблема исчезла, и src_addr и dst_addr в выходных данных отличаются.