之前作业用的是JPCAP,这次作业老师要求使用C/C++,便要重新了解一下winpcap,在往上搜集了个比较详细的配置策略。
新建一个项目,GetDevs.cpp。用来测试。测试代码最后有给出。
View->Property Manager
Debug|Win32 -> Mircrosoft.Cpp.Win32.user(右键)->Properties
注:此处设置为全局的!
设置环境目录
VC++ Directiories -> Include Directories和Library Directories中添加路径。
假如将wpdpack放到c盘。则:
Include Directories:c:\wpdpack\Include;
Library Directories:c:\wpdpack\Lib;
分号不要漏!
设置编译条件
C/C++下Preprocessor(预处理器)的Preprocessor Definitions(预处理定义)
添加WPCAP;HAVE_REMOTE;
注意分号,每个预定义符用“;”分开。
Linker(连接器)下的Command Line(命令行)
Additional Options (附加项)中输入:
wpcap.lib ws2_32.lib(注:用空格分隔。)
注:有的网站上写的是用分号隔开,我试了下,是错误的,此处用空格
确定即可。
Ctrl + F5运行。显示出网卡驱动信息。表明配置成功。
附录:代码GetDevs.cpp
#include "pcap.h"
void main()
{
pcap_if_t *alldevs,*d;
int i=0;
char errbuf[PCAP_ERRBUF_SIZE];
/* PCAP_ERRBUF_SIZE =256,在pcap.h中定义*/
if (pcap_findalldevs(&alldevs, errbuf) == -1) /* 这个API用来获得网卡的列表*/
{ fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
//errbuf参数当有异常情况发生时这个参数会被填充为某个特定的错误字串
return;
}
/* 显示列表的响应字段的内容*/
for(d=alldevs;d;d=d->next)
{ printf("%d. %s", ++i, d->name);
if (d->description) printf(" (%s)\n", d->description);
else printf(" (No description available)\n");
}
if(i==0)
{printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
return;
}
/*We don't need any more the device list. Free it */
pcap_freealldevs(alldevs); //释放掉内存资源
}