配置環境
- Windows 10
- Visual Studio 2017
配置步驟
- 安裝winpcap
- 下載wpdpack
- 啟動vs2017
- 新建visual C++空項目
- 項目->屬性->左側配置屬性->VC++目錄,修改包含目錄和庫目錄到wpdpack的include和lib
- 項目->屬性->C/C++->預處理器->預處理器定義,添加_XKEYCHECK_H; HAVE_REMOTE;WPCAP;WIN32
- 項目->屬性->鏈接器->輸入->附加依賴項,添加Packet.lib;wpcap.lib;ws2_32.lib
報錯:無法打開源文件sys/time.h和u_int
原因:這些都是unix系統的東西,需要在主文件中指明是windows系統
解決方法:#define WIN32(若預處理器定義中已有WIN32則不會出現問題)
報錯:找不到源文件stdafx.h
原因:已經再預編譯頭中定義,不需要多余include
報錯:const char 與char *不兼容
解決方法:屬性 -> C/C++ -> 語言 -> 符合模式 -> 否
報錯:一些帶有define建議的Unsafe報錯,比如建議將strcpy改為strcpy_s或屏蔽報錯
原因:在新版本的VS中使用了一些比較古老的函數
解決方法:在預處理器定義中添加_WINSOCK_DEPRECATED_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS
Demo
#include "pcap.h"
#include "windows.h"
#include <iostream>
using namespace std;
#pragma comment(lib, "wpcap.lib")
int main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int i = 0;
char errbuf[PCAP_ERRBUF_SIZE];
/*獲取本地機器設備列表*/
if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1)
{
fprintf(stderr, "Error in pcap_findalldevs_ex: %s\n", errbuf);
exit(1);
}
/*打印列表*/
for (d = alldevs; d != NULL; d = d->next)
{
printf("%d.%s", ++i, d->name);
if (d->description)
printf("(%s)\n", d->description);
else
printf("(No description available)\n");
}
int a; cin >> a;//卡一下輸出
if (i == 0)
{
printf("\nNo interfaces found!Make sure WinPcap is installed.\n");
return 0;
}
pcap_freealldevs(alldevs);
}
參考資料:
