winpcap学习(二)获取设备列表

原文:http://www.ferrisxu.com/WinPcap/html/index.html

获取设备列表

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

#include <iostream>
#include <pcap.h>

int 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,&alldevs,errbuf)==-1)
    {
        std::cerr<<"Error in pcap_findalldevs_ex:"<<errbuf<<std::endl;
        exit(1);
    }
    for(d=alldevs;d!=NULL;d=d->next)
    {
        std::cout<<++i<<"."<<d->name;
        if(d->description)
            std::cout<<"("<<d->description<<")"<<std::endl;
        else
            std::cout<<"(No descripton available)"<<std::endl;
    }
    if(i==0)
        std::cout<<std::endl<<"No interfaces found! Make sure WinPcap is installed"<<std::endl;
    pcap_freealldevs(alldevs);
    return 0;
}

首先,pcap_findalldevs_ex(),和其他libpcap函数一样,有一个errbuf参数。一旦发生错误,这个参数将会被libpcap写入字符串类型的错误信息。

第二要记住,不是所有操作系统都支持libpcap提供的网络程序接口,因此,如果我们想写一个可移值的应用程序,我们就必须考虑在什么情况下,description是null。

最后要记住,当我们完成了设备列表的使用,我们要调用pcap_freealldevs()函数将其占用的内存资源释放。

需要注意的是要在工程中设置好include路径及包含wpcap.lib库,并设置宏定义WPCAP和HAVE_REMOTE。

 

最后欢迎大家访问我的个人网站: 1024s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值