我在linux (centos)上的C中使用libpcap,我遵循this guide,我想简单地打印出ascii中的整个包,我设法通过在"my_callback“函数中将其转换为u_char*来使其工作。但是我不知道如何得到数据的长度。strstr不起作用。头部有一个len成员,您可以访问它来获取大小,但我找不到与所传递的*包类似的任何东西。任何帮助都是非常感谢的。
发布于 2010-04-08 01:39:01
在回调中,pkthdr变量的caplen成员(请参阅struct pcap_pkthdr)包含捕获的数据包的大小。
例如,假设捕获了一个数据包。帧的总长度为1024字节。但是,捕获驱动程序只捕获了帧的前128个字节,并将其提供给您的回调。
在这种情况下,您应该预期pkthdr->caplen为128,header->len为1024。
发布于 2013-07-15 19:01:38
总的分组大小在ip报头(http://en.wikipedia.org/wiki/IPv4_header#Total_Length)处的“总长度”字段。
如何使用libpcap获取该值可以在以下示例中找到:http://www.tcpdump.org/sniffex.c
您只需从该变量中获取引用“总长度”(名为ip_len)的字段的值:
const struct sniff_ip *ip; /* The IP header */https://stackoverflow.com/questions/2594554
复制相似问题