使用C ++

时间:2019-04-15 03:28:26

标签: c++ networking pcap

我正试图监视每月的网络使用情况。因为默认的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完美地无法运行。

1 个答案:

答案 0 :(得分:0)

该示例代码具有误导性;他们打算用字符串值替换PCAP_SRC_IF_STRING而不是照原样使用它。要使用pcap_findalldevs_ex(),您需要将第一个参数作为字符串传递,以指定在哪里寻找适配器。您应该发现以下效果更好:

 pcap_findalldevs_ex("rpcap://",...

我建议您使用它作为参考:WinPCAP exported functions