Npcap: Windows Packet Capture Library & Driver
這裡有四個檔案
此處以個人安裝方法進行介紹,原理是不變的
建立WinNetworkProgram
資料夾,以下操作均在該資料夾下進行
npcap-0.9997.exe
安裝Npcap,傻瓜式安裝,不作介紹;SDK
資料夾下;Source-code
資料夾下;DebugSymbols
資料夾下Project
資料夾,我們的專案在這個資料夾中展開Project
資料夾下建立src
和bin
資料夾,src
存放你的原始碼,bin
存放你的生成的可執行程式C/C++ Extension Pack
即可Project
資料夾在vscode中開啟,(開啟資料夾)C/C++
這個外掛會自動建立設定供你進行編輯,如果沒有,建立.vscode
資料夾,在裡面建立c_cpp_properties.json
檔案,並填寫以下程式碼:{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/..//SDK/Include/**",
"${workspaceFolder}/../SDK/Include",
"${workspaceFolder}/src/**",
"${workspaceFolder}/src"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "D:\\etc\\MinGW\\bin\\gcc.exe",
"cStandard": "gnu18",
"cppStandard": "gnu++14",
"intelliSenseMode": "gcc-x64",
"compilerArgs": [
"-L${workspaceFolder}/../SDK/Lib",
"-lwpcap",
"-lPacket"
]
}
],
"version": 4
}
儲存退出。
在test.c
檔案中寫入如下程式碼:
#include "pcap.h"
#include <stdio.h>
int main()
{
char errbuf[PCAP_ERRBUF_SIZE];//存放錯誤資訊的緩衝
pcap_if_t *it;
int r;
r=pcap_findalldevs(&it,errbuf);
if(r==-1)
{
printf("err:%s\n",errbuf);
exit(-1);
}
while(it)
{
printf(":%s\n",it->name);
it=it->next;
}
}
launch.json
和task.json
檔案,注意檢視裡面的引數內容和之前設定的c_cpp_properties.json
中的是否一樣,即該部分"compilerArgs": [
"-L${workspaceFolder}/../SDK/Lib/",
"-lwpcap",
"-lPacket"
]
一般來說,這個檔案是根據c_cpp_properties.json
生成的,不會有大問題的。
Microsoft Windows [版本 10.0.19041.508]
(c) 2020 Microsoft Corporation. 保留所有權利。
D:\home\xxxx\WinNetworkProgram> cmd /C "c:\Users\xxx\.vscode\extensions\ms-vscode.cpptools-1.0.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-340uippl.fhl --stdout=Microsoft-MIEngine-Out-ekoupmwk.30e --stderr=Microsoft-MIEngine-Error-jpdvtcwn.bxf --pid=Microsoft-MIEngine-Pid-xdcenvcj.2rm --dbgExe=D:\etc\MinGW\bin\gdb.exe --interpreter=mi "
:\Device\NPF_{456C0DB7-9C02-48CE-BF9C-D0201D93A39B}
:\Device\NPF_{65EB5D2F-C7FD-4DAB-B591-042BF9295C9B}
:\Device\NPF_{D235884A-3C87-4777-9B9C-9AF186C3BADF}
即成功
settings.json
中編輯Executor Map
項。settings.json
編輯,將c
和cpp
對應的項改為如下內容:"c": "cd $dir && gcc $fileName -o $workspaceRoot\\bin\\$fileNameWithoutExt -L$workspaceRoot\\..\\SDK\\Lib -lwpcap -lPacket && cd $workspaceRoot\\bin\\ && $fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $workspaceRoot\\bin\\$fileNameWithoutExt -L$workspaceRoot\\..\\SDK\\Lib -lwpcap -lPacket && cd $workspaceRoot\\bin\\ && $fileNameWithoutExt",
$workspaceRoot
就是之前的設定中的${workspaceFloder}
Project
SDK
DebugSymbols
Source-code