抓包函数
pcap_next_ex, pcap_next 抓包
#include <pcap/pcap.h>
int pcap_next_ex(pcap_t *p, struct pcap_pkthdr **pkt_header,
const u_char **pkt_data);
const u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h);
pcap_next_ex()从网卡上读包,成功获取,则參数pkt_header指向一段内存,该内存是关于包的一些信息,參数pkt_data指向抓到的数据报文
pcap_next()抓包(类似抓包函数pcap_dispatch,指定參数cnt为1),返回一个无符号指针指向抓取到的数据。參数h为包的一些基本信息
返回值:pcap_next_ex()
返回值1 成功抓取到包
返回值0 表示抓包超时
返回值-1 抓包出错。可调用 pcap_geterr()或者pcap_perror()来调试出错信息
返回值-2 文件里包已经读取完成
pcap_next()
成功则返回指向数据包的指针
出错则返回控指针,抓包出错,从网卡上抓不到包(包由于过滤条件都被丢弃了。超时了,抓包句柄指向的网卡不支持堵塞模式并且没有不论什么包经过该网卡)。在文件里没有包,没有有效地方法来推断该函数出错的原因