gpt4 book ai didi

c - printf "__be32"值类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:07 27 4
gpt4 key购买 nike

我使用这个“struct iphdr* ip_reply”通过这个函数读取接收到的数据包:

recvfrom(sockfd, buffer, sizeof(struct iphdr) + sizeof(structicmphdr), 0, (struct sockaddr *)&connection, &addrlen))

ip_reply = (struct iphdr*) buffer; // casting => read ip header from received packet

这是结构参数:

      struct iphdr {  #if defined(__LITTLE_ENDIAN_BITFIELD)
__u8 ihl:4,
version:4; #elif defined (__BIG_ENDIAN_BITFIELD)
__u8 version:4,
ihl:4;

__u8 tos;
__be16 tot_len;
__be16 id;
__be16 frag_off;
__u8 ttl;
__u8 protocol;
__sum16 check;
__be32 saddr;
__be32 daddr;
/*The options start here. */ };

如何用 printf 显示 "saddr""daddr"?

最佳答案

libc 中有一组函数可以处理这些转换。在您的情况下,您可以使用函数:inet_ntoa()。基本上,它获取网络二进制格式(网络字节顺序)的地址,并使用点表示法将 IPv4 地址检索到字符串中。

如果您使用的是 unix SO,我建议您查看手册页以了解正确的用法。

关于c - printf "__be32"值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17473574/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com