首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libpcap包大小

libpcap包大小
EN

Stack Overflow用户
提问于 2010-04-08 01:29:12
回答 2查看 3.7K关注 0票数 1

我在linux (centos)上的C中使用libpcap,我遵循this guide,我想简单地打印出ascii中的整个包,我设法通过在"my_callback“函数中将其转换为u_char*来使其工作。但是我不知道如何得到数据的长度。strstr不起作用。头部有一个len成员,您可以访问它来获取大小,但我找不到与所传递的*包类似的任何东西。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-08 01:39:01

在回调中,pkthdr变量的caplen成员(请参阅struct pcap_pkthdr)包含捕获的数据包的大小。

例如,假设捕获了一个数据包。帧的总长度为1024字节。但是,捕获驱动程序只捕获了帧的前128个字节,并将其提供给您的回调。

在这种情况下,您应该预期pkthdr->caplen为128,header->len为1024。

票数 3
EN

Stack Overflow用户

发布于 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)的字段的值:

代码语言:javascript
复制
const struct sniff_ip *ip;              /* The IP header */
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2594554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档