抓包函數
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()
成功則返回指向數據包的指針
出錯則返回控指針,抓包出錯,從網卡上抓不到包(包由於過濾條件都被丟棄了。超時了,抓包句柄指向的網卡不支持堵塞模式並且沒有不論什么包經過該網卡)。在文件里沒有包,沒有有效地方法來推斷該函數出錯的原因
