基本的接口函数的定义
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)
函数作用: 关闭网络设备,并释放资源
阅读(1213) | 评论(0) | 转发(0) |