我在玩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 不一样了。