inet_ntoa 的奇怪行为

发布于 2024-11-10 10:39:02 字数 431 浏览 3 评论 0原文

我在玩 libpcap 时发现了一个奇怪的事情。

输出的一部分是: “From: src_addr, To: dst_addr”

如果我用一条语句打印,即 printf("发件人:%s,收件人:%s\n", inet_ntoa(ip_hdr->ip_src), inet_ntoa(ip_hdr->ip_dst)); 打印的 dst_addr 与打印的 src_addr 完全相同。但是,当我在这一行设置断点并使用 gdb 检查 ip_src 和 ip_dst 中存储的值时,它们是不同的。

如果写成两条语句,即 printf("来自: %s, ", inet_ntoa(ip_hdr->ip_src)); printf("收件人:%s\n", inet_ntoa(ip_hdr->ip_dst)); 然后问题就消失了,输出中的 src_addr 和 dst_addr 不同。

I was playing with libpcap and found a strange thing.

One part of the output is:
"From: src_addr, To: dst_addr"

If I print with one statement, i.e.
printf("From: %s, To: %s\n", inet_ntoa(ip_hdr->ip_src), inet_ntoa(ip_hdr->ip_dst));
The printed dst_addr is exactly the same as the printed src_addr. However, when I set a break point at this line and use gdb to examine the values stored in ip_src and ip_dst, they are different.

If written in two statements, i.e.
printf("From: %s, ", inet_ntoa(ip_hdr->ip_src));
printf("To: %s\n", inet_ntoa(ip_hdr->ip_dst));
Then the problem disappeared and the src_addr and dst_addr in the output are different.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过气美图社 2024-11-17 10:39:02

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

I have faced the same and it is because the function uses a static buffer. More explanation can be found in inet_ntoa problem (look on the third post).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文