繁体   English   中英

pcap为什么总是8个字节的数据包……为什么?

[英]pcap why always packets of 8 bytes… why?

我正在使用pcap库,但我不知道为什么总是得到以下输出:

大小为新数据包:udata = 8 hdr = 8 pkt = 8

这是代码:

void handle_pcap(u_char *udata, const struct pcap_pkthdr *hdr, const u_char *pkt)
{
  DEBUG("DANY new packet with size: udata= %d hdr=%d pkt=%d", (int) sizeof(udata),(int) sizeof(hdr),(int) sizeof(pkt) );
...
stuff
}

在另一个文件中,我使用:

status = pcap_loop (pcap_obj,
    -1     /* How many packets it should sniff for before returning (a negative value
       means it should sniff until an error occurs  (loop forever) ) */,
    handle_pcap  /* Callback that will be called*/,
    NULL   /* Arguments to send to the callback (NULL is nothing) */);

输出正常吗?

我认为不是,因为有时我的程序有时奏效。

您正在打印指针的大小,而不是查看pcap_pkthdr * hdr来查看数据包的大小。

您可以通过查看hdr-> caplenhdr-> len来找到捕获数据的大小和整个数据包的大小。

您正在获得(各种)指针的大小。

例如sizeof(udata)获得u_char *的大小。 这就是为什么数字看起来可疑的原因。

如果需要数据包的大小, hdr->caplenhdr->len (前者是捕获的长度,后者是数据包的长度)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM