当前位置:  技术问答>linux和unix

有用过libpcap的大哥帮忙看一看

    来源: 互联网  发布时间:2015-04-07

    本文导语:  我刚开始学libpcap,有一个地方搞不明白,就是bpf_hdr结构和pcap_pkthdr结构有什么关系,我看过的介绍都说他们是加在抓来的数据包的前面,而且内容都一样,只是后者多了一个成员。哪位大哥帮我解释一下好吗?   另...

我刚开始学libpcap,有一个地方搞不明白,就是bpf_hdr结构和pcap_pkthdr结构有什么关系,我看过的介绍都说他们是加在抓来的数据包的前面,而且内容都一样,只是后者多了一个成员。哪位大哥帮我解释一下好吗?
  另外我用它写了一个小程序,原意是想显示抓到包的内容,可是总是提示说第22和25行"derefenencing pointer to incomplete type",源程序在下面,请哪位大哥帮忙看一下:
#include
#include
#define SIZEOF_BPF_HDR 20

int main()
{
  char errbuf[PCAP_ERRBUF_SIZE];
  pcap_t *pf;
  struct pcap_pkthdr h;
  struct bpf_hdr *bf;
  int i;
  pf=pcap_open_live("eth0",68,0,1000,errbuf);
  while(1)
    {
       pcap_next(pf,&h);
       bf=(struct bpf_hdr *)pf->buffer;                            //第22行
       for(i=0;ibh_caplen;i++)
         {
            printf("%.2x",*((pf->buffer+SIZEOF_BPF_HDR)+i));       //第25行
         }
       printf("nend of one packet!nn");
    }
  pcap_close(pf);
}

千万不要嫌分少,这是我所有的分数了,拜托了!!!!!

|
出现这个错误的原因是编译器无法找到pcap_t的定义。pcap_t在pcap.h里定义为:
typdef struct pcap pcap_t;
但struct pcap定义在pcap-int.h里,这个头文件在make install时没有被安装,需要自己拷贝到pcap.h所在的目录下。

|
我也是刚开始学习pcap,我不太清楚你所说的bpf_hdr结构和pcap_pkthdr结构的区别。
我读了一下你的程序,感觉你是想,将指向pcap结构的buffer域的指针,赋给一个指向bpf_hdr结构的指针。

我把第22行改为:
bf=(struct bpf_hdr *) pf;
bf += OFFSET;
把第25行改为:
printf("%.2x",*((bf+SIZEOF_BPF_HDR)+i)); 
这样程序是可以编译通过,并且执行的!!!

注意,上面的OFFSET应该是pcap结构buffer域之前的所有域的总长度。这个长度不太好算,我做实验时用了一个常数值。
我以前看到有程序中写过sizeof(struct pcap_sf)这样的语句。但我在编译时,gcc报错:“sizeof applied to an incomplete type”。不过sizeof(int), sizeof(int *)这样的写法是可行的,大不了,就是一个域一个域地累加罢!!!

一已之言,不知是否正确理解了兄台的原意。我最近也在学pcap,希望与大家交流,请多指教!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于jbuilder,到底是在jbuilder中指定的classpath有用,还是在autoexec.bat中指定的classpath有用
  • 报考SCJD认证有用吗?
  • SCJP 有用吗???
  • java 275认证有用嘛??
  • 那里有用JAVA做的B/S结构软件的演示版或源代码下载呀?
  • 请问,system.map有用吗?
  • 有人有用JAVA读一个网页代码的程序吗?(在线等!)
  • LINUX开发工具我没有用过,不知道DELPHI的KYLIX如何?
  • Java和.Net在将来谁更有用
  • 将驱动模块编译进内核是否有用??
  • 有用S3C2440搞过3G的吗?
  • 请问红旗Linux的认证有用吗
  • Linux在大连的发展前景怎么样?我考RHCE有用吗?工作好不好找?
  • 在new ImageIcon()中使用相对路径怎么没有用?
  • 有用过SAMBA的changepassword.cig的吗?
  • 哪里有用JAVA读取 MS-Excel文件的包?谢谢谢谢
  • 考上了SCJP,有用吗? 工作好找吗?
  • 用javascript的switch条件判断没有用吗
  • 有用过libcurl的没? 可以做http server吗?
  • 北大出版社的<windows程序设计>对学java有用吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3