我正试图监视每月的网络使用情况。因为默认的Windows 10数据使用页面不起作用,所以我借此机会学习了C ++,因为我熟悉Python和PHP之类的语言。
经过数小时的Google搜索,我得出的结论是WinPcap是我应该使用的模块。我是从这里下载的:https://www.winpcap.org/devel.htm
我将.zip解压缩到C ++控制台应用程序文件夹中。因此我的应用程序位于C:\Visual Studio\ProjectName123\
中,并且我将WpdPack/
提取到了其中。
我正在尝试使用他们的示例代码:
#include "pch.h"
#include "WpdPack\Include\pcap\pcap.h"
main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int i = 0;
char errbuf[PCAP_ERRBUF_SIZE];
/* Retrieve the device list from the local machine */
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);
}
/* Print the list */
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");
}
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);
}
我收到几个错误,开头是:identifier "PCAP_SRC_IF_STRING" is undefined
以下示例非常令人讨厌,它无法正常运行。对C ++感到非常沮丧。
我们将非常感谢您的帮助,特别说明了为什么我的代码this example完美地无法运行。
答案 0 :(得分:0)
该示例代码具有误导性;他们打算用字符串值替换PCAP_SRC_IF_STRING
而不是照原样使用它。要使用pcap_findalldevs_ex()
,您需要将第一个参数作为字符串传递,以指定在哪里寻找适配器。您应该发现以下效果更好:
pcap_findalldevs_ex("rpcap://",...
我建议您使用它作为参考:WinPCAP exported functions