最近老师让写一个流量监控程序,用到了libpcap编程。虽然很简单,但是前期也走了一些弯路。最初是直接从别人博客里面copy的代码,然后运行时就是结果就是不正确。本以为是系统问题,我又装了个双系统。。。
现在我把自己的代码分享出来吧,这些是我自己运行成功的,代码很简单,只是希望能给新人一些借鉴。
首先:我们先得到我们的设备名称,因为之后我们需要根据名称指针来打开我们的设备,得到名称指针的方式如下:
/*get our device name*/
char *dev,errbuf[PCAP_ERRBUF_SIZE];
dev = pcap_lookupdev(errbuf);
printf("Device: %s\n",dev); /*print our device name*/
如果我们实现已经知道设备名称了,就不用在通过这个方式得到了。
得到名称之后,我们根据名称指针打开我们的设备,这时候我们需要用到的函数是:
/*pcap_t *pcap_open_dev(char*device,int snaplen,int promisc,int to_ms,char*errbuf);*/
device是设备名称,snaplen是pcap将捕获的最大字节数,promisc是混合模式,to_ms是读取时的超时值,单位是毫秒,为0则一直嗅探直到错误发生,errbuf是出错之后信息的储存。
函数的返回值是一个句柄,在下面我们将会使用的到。
/*open device and sniff
*pcap_t *pcap_open_dev(char*device,int snaplen,int promisc,int to_ms,char*errbuf);
*
*/