采集lo网卡数据,简单的函数使用。
pcap_open_live:打开一个捕获的句柄
pcap_dump_open:抓的包保存到本地文件,给出保存路径名
pcap_loop:从pcap_t中读包,直到中断或错误
pcap_dump:抓取的包写入文件
pcap_dump_flush:写文件从缓存到文件
void CCapture::capWork()
{
char *dev;
pcap_t *pcapHand = NULL;
char errcont[PCAP_ERRBUF_SIZE] = {0};
dev = "lo";
pcapHand = pcap_open_live(dev, 65535, 1, 0, errcont);
if (pcapHand == NULL)
{
cout<<"pcap_open_live:"<<errcont<<endl;
exit(-1);
}
else
{
cout<<"live:"<<dev<<endl;
}
pcap_dumper_t *outcap = pcap_dump_open(pcapHand, "./testcap.pcap");
pcap_loop(pcapHand, 20, pcap_dump, (unsigned char *) outcap);
pcap_dump_flush(outcap);
pcap_dump_close(outcap);
pcap_close(pcapHand);
}
int main(int argc, char *argv[])
{
CCapture capt;
capt.capWork();
return 1;
}