Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4464592
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: Mysql/postgreSQL

2011-08-13 14:25:20

 基本的接口函数的定义

1. 函数 pcap_lookupdev()

   函数原型: char* pcap_lookupdev(char *errbuf)
   函数作用:返回一个可被 pcap_open_live()或pcap_liikupnet()函数使用的网络设备名(一个字符串指针)。如果函数出错,则返回NULL,同时 errbuf中存放相关的错误信息。


2. 函数 pcap_lookupnet()

   函数原型: int pcap_lookupnet(char *device, bpf_u_int32 *netp,bpf_u_int32 *maskp,char *errbuf)
   函数作用:获得指定网络设备的网络号和掩码。netp和maskp参数都是bpf_u_int32指针,用于存储网络设备IP地址和子网掩码。如果函数出错,则返回-1,同时 errbuf中存放相关的错误消息。

3. 函数 pcap_open_live()

   函数原型:pcap_t* pcap_open_live(char *device,int snaplen,int promisc,int to_ms, char *ebuf)
   函数作用:获得用于捕获网络数据包的数据包捕获描述字。device参数指定打开的网络设备名;snaplen参数定义捕获数据的最大字节数;promisc指定是否将网络接口置于混杂模式;to_ms参数指定超过时间(毫秒),ebuf参数则仅在pcap_open_live()函数出错返回NULL时,用于存放错误消息。
   若函数执行成功,则返回可用的数据包捕获描述字,否则返回NULL,同时在ebuf中存放错误的信息。

4. 函数pcap_compile()

   函数原型: int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optiize)
   函数作用:将指定的规则编译到过滤器中,其中参数p是描述字,fp是一个bpf_program结构的指针,在pcap_compile()函数中被赋值,optmize参数控制结构代码的优化,netmask参数指定本地网络的网络掩码。
    若函数执行失败,会返回-1,成功时返回0

5. 函数pcap_setfilte

   函数原型: int pcap_setfilter(pcap_t *p, struct bpf_program *fp);
   函数作用:设定一个过滤程序,其中参数p是描述字,fp参数是bpf_program 结构体指针,通常取自pcap_compile()函数调用
  

6. 函数pcap_loop()

   函数原型: int pcap_loop(pcapt_t *p, int cnt, pcap_handler callback, u_char *user)

   函数作用: 捕获并处理数据包,其中参数p是描述字
    cnt参数指定函数返回当前所处理数据包的最大值。
    若cnt值为-1,表示在一个缓冲区中处理所有的数据包
    若cnt值为0,表示处理所有数据包,或出现错误。

    callback参数指定一个带有3个参数的回调函数,这个函数的原型为:
void call_back(u_char *, pcap_pkthdr * u_char*)
   这3个参数一个是从pcap_loop()函数传递过滤的u_char 指针,一个是pcap_pkthdr结构的指针,另一个是指示数据包大小的u_char指针。

    如果成功则返回读取到的字节数。读取到EOF时则返回零值,出错时则返回-1,此时可调用pcap_perror()或pcap_geterr()函数错误信息。


7. 函数pcap_dispatch()

   函数原型:int pcap_dispatch(pcap_t *p, int cnt, pcap_handler callback,u_char *user);
   函数作用:该函数与pcap_loop()功能一直,也是捕获并处理数据包,其中参数p是描述字。
 
   cnt参数指定函数返回当前所处理数据包的最大值。
   若cnt值为-1,表示在一个缓冲区中处理所有的数据包。
   若cnt值为0, 表示处理所有数据包,读取到EOF时或超时读取时才返回

   callback 与上面的是一样的。


8 函数 pcap_next()

  函数原型: u_char *pcap_next(pcap_t *p,struct pcap_pkthdr *h)
  函数功能: 返回下一个数据包指针,其中参数p指向设备描述字,h指向数据包的头信息,若程序执行失败,则返回NULL,否则返回数据包的字符指针。

9 函数pcap_close

  函数原型: void pcap_close(pcap_t *p)
  函数作用: 关闭网络设备,并释放资源


阅读(1203) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~