使用 pcap 我声明了 rtp 结构,当我尝试指向数据包的这个区域时,我发现根据我的声明,它以不同的方式工作。
我写了这个:
struct udphdr *udp;
struct rtphdr *rtp, *rtp2;
udp = (struct udphdr*) (packet + sizeof(struct ether_header) + (ip->ip_hl*4));
rtp = (struct rtphdr*) (packet + sizeof(struct ether_header) + (ip->ip_hl*4) + sizeof(struct udphdr));
rtp2 = (struct rtphdr*) (udp + sizeof(struct udphdr));
printf("UPD header: %p\n",udp);
printf("RTP header 1: %p\n",rtp);
printf("RTP header 2: %p\n",rtp2);
输出是:
UDP 标头:0x7fcea3802222
RTP 标头 1:0x7fcea380222a
RTP 标头 2:0x7fcea3802262
为什么在第一个声明中添加了 UDP 标头的 8 个字节(0x2a - 0x22 = 0x8),而在另一个声明中添加了更多。
谢谢