inet_ntoa的奇怪行为

时间:2011-05-31 04:28:26

标签: libpcap inet

我正在玩libpcap并发现了一件奇怪的事情。

输出的一部分是: “来自:src_addr,收件人: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(“To:%s \ n”,inet_ntoa(ip_hdr-> ip_dst)); 然后问题消失了,输出中的src_addr和dst_addr也不同了。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,因为该函数使用静态缓冲区。可以在inet_ntoa problem中找到更多解释(请参阅第三篇文章)。