一)
数据结构
•1) typedef struct _ADAPTER ADAPTER //描述一个网络适配器;
•2) typedef struct _PACKET PACKET //描述一组网络数据报的结构;
•3) typedef struct NetType NetType //描述网络类型的数据结构;
•4) typedef struct npf_if_addr npf_if_addr //描述一个网络适配器的ip地址;
•5) struct bpf_hdr //数据报头部;
•6) struct bpf_stat //当前捕获数据报的统计信息。
函数
1)int pcap_findalldevs ( pcap_if_t ** alldevsp, char * errbuf)
功能:列出当前所有可用的网络设备(网卡)
所在头文件:pcap.h
参数说明: pcap_if_t ** alldevsp 指向pcap_if_t结构列表的指针的地址。实际使用时,声明一个pcap_if_t结构的指针(pcap_if_t * alldevsp),然后把该地址作为参数传入即可(&alldevsp)。
char * errbuf 错误缓冲区,要求长度至少为PCAP_ERRBUF_SIZE 字节
返回值: -1:出错,将会向错误缓冲中填充错误信息,错误信息为ASCII码,可以直接打印出来。
0:正确返回,可以使用alldevsp访问所有网络硬件
pcap_if的结构
Struct pcap_if {
struct pcap_if *next;
char *name;
chat *description;
struct pcap_addr address;
u_int flags;
}
也可以用pcap_if_t 代替pcap_if
2) pcap_t * pcap_open_live ( char * device, int snaplen, int promisc,int to_ms, char * errbuf );
获取一个包捕捉句柄,类似文件操作函数使用的文件句柄。
device指定网络接口设备名。
snaplen指定单包最大捕捉字节数。
promisc指定网络接口进入混杂模式。
to_ms指定毫秒级读超时,0可能代表永不超时。
errbuf包含失败原因。
如果调用失败返回NULL
3)void pcap_close ( pcap_t *p )
该函数用于关闭pcap_open_live()获取的包捕捉句柄,释放相关资源。
4int pcap_lookupnet ( char * device, bpf_u_int32 * netp, pf_u_int32 * maskp, char *