设置过滤器if(pcap_setfilter(adhandle,&fcode)<0){cout<<"\nErrorsettingthefilter.\n";pcap_freealldevs(alldevs);return;}循环捕获ARP包,并进行解析while((result=pcap_next_ex(adhandle,&header,&pkt_data))>=0){输出ARP数据包的各个域的内容到文件和屏幕上}源程序#include<winsock2.h>#ment(lib,"Ws2_32.lib")//用到ntobs()//等同于点击"project-setting-link"打开object/librarymodule编辑框后加入文件#ment(lib,"wpcap.lib")#include"pcap.h"//此头文件没有包含在VC中,需要另外加入#include<fstream.h>#include<iomanip.h>//格式化输出需要用到#include<conio.h>//用到_getch()//注意到接收的数据包头中代表类型,数据长度的字段采用的是big-endian//所以对于2B/4B的数据要用ntohs()转换为本机形式//ARP包结构structarppkt{?unsignedshorthdtyp;//硬件类型.值0001?unsignedshortprotyp;?unsignedcharhdsize;?unsignedcharprosize;?unsignedshortop;?u_charsmac[6];?u_charsip[4];?u_chardmac[6];?u_chardip[4];};voidpacket_handler(constpcap_pkthdr*header,constu_char*pkt_data,ostream&out);