![](/img/trans.png)
[英]Why is pcap_datalink() always returning 1 (Ethernet), even on wireless device?
[英]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-> caplen和hdr-> len来找到捕获数据的大小和整个数据包的大小。
嗯 您正在获得(各种)指针的大小。
例如sizeof(udata)
获得u_char *
的大小。 这就是为什么数字看起来可疑的原因。
如果需要数据包的大小, hdr->caplen
和hdr->len
(前者是捕获的长度,后者是数据包的长度)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.