千家信息网

利用mic visual studio 2010 编译器执行wincap获取网络适配器的代码

发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,WinPcap提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息。值得注意的是,数据域
千家信息网最后更新 2024年10月17日利用mic visual studio 2010 编译器执行wincap获取网络适配器的代码

WinPcap提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息。值得注意的是,数据域 namedescription 表示一个适配器名称和一个可以让人们理解的描述。

下列代码能获取适配器列表,并在屏幕上显示出来,如果没有找到适配器,将打印错误信息。

核心代码:

#include "pcap.h"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");    }        if (i == 0)    {        printf("\nNo interfaces found! Make sure WinPcap is installed.\n");        return;    }    /* 不再需要设备列表了,释放它 */    pcap_freealldevs(alldevs);}int pcap_findalldevs_ex  (    char *     source,                                        struct pcap_rmtauth * auth,                                         pcap_if_t **     alldevs,                                         char *     errbuf                                     )


0