0

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

4

1 回答 1

0

我也遇到过同样的情况,这是因为该函数使用了静态缓冲区。更多解释可以在inet_ntoa 问题中找到(看第三篇文章)。

于 2011-06-24T14:49:19.203 回答