我使用这个“struct iphdr * ip_reply”来读取这个函数接收到的数据包:
recvfrom(sockfd, buffer, sizeof(struct iphdr) + sizeof(struct icmphdr), 0, (struct sockaddr *)&connection, &addrlen))
ip_reply = (struct iphdr*) 缓冲区;// 强制转换 => 从接收到的数据包中读取 ip 标头
这是结构参数:
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”?