Получить сетевой трафик с C ++ - PullRequest
1 голос
/ 15 апреля 2019

Я пытаюсь отслеживать ежемесячное использование сети.Поскольку стандартная страница использования данных в 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

Чрезвычайно разочаровывает, следуя примеру с T, и он работает неправильно.Чрезвычайно разочарован C ++.

Помощь была бы признательна, особенно объясняя, почему мой код, который следует этот пример отлично, не работает.

1 Ответ

0 голосов
/ 15 апреля 2019

Этот пример кода вводит в заблуждение; они намерены заменить PCAP_SRC_IF_STRING на строковое значение, а не использовать его как есть. Чтобы использовать pcap_findalldevs_ex(), вам нужно передать первый аргумент в виде строки, указывающей, где он должен искать адаптеры. Вы должны обнаружить, что лучше работает следующее:

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

Я бы посоветовал вам использовать эту ссылку: Экспортируемые WinPCAP функции

...