libpcap是unix/linux平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础。
这个库的位置在/usr/local/lib下.在 /usr/local/include下是他的头文件pcap.h。要写一个使用libpcap库函数的程序只需要在代码中加上#i nclude <pcap.h>,然后在编译时末尾加上-lpcap选项就可以了.
Libpcap应用程序从形式上看很简单,下面是一个简单的程序框架:
char * device; /* 用来捕获数据包的网络接口的名称 */
pcap_t * p; /* 捕获数据包句柄,最重要的数据结构 */
struct bpf_program fcode; /* BPF 过滤代码结构 */
/* 第一步:查找可以捕获数据包的设备 */
device = pcap_lookupdev(errbuf);
/* 第二步:创建捕获句柄,准备进行捕获 */
p = pcap_open_live(device, 8000, 1, 500, errbuf);
/* 第三步:如果用户设置了过滤条件,则编译和安装过滤代码 */
pcap_compile(p, &fcode, filter_string, 0, netmask);
pcap_setfilter(p, &fcode);
pcap_loop (p, 7, printer, NULL); /*
这里的p就是我们刚刚生成的描述符;的第二个参数表示抓多少个包,设置为-1表示不定义数量,抓取所有的包;第三个参数是一个回调函数,每当抓到一个数据包之后程序将自动调用这个函数;第四个参数是一个指针,可以为空。 */
/*最后别忘了close*/
pcap_close (p);