WinPcap编程【2】--获取设备列表

通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表。libpcap和WinPcap都提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息。值得注意的是,数据域 name 和 description 表示一个适配器名称和一个可以让人们理解的描述。

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

[cpp]  view plain copy
  1. /* 
  2. 获取本地机器设备列表,并打印 
  3. */  
  4. #include "pcap.h"  
  5.   
  6. void main()//samp()  
  7. {  
  8.     pcap_if_t *alldevs;  
  9.     pcap_if_t *d;  
  10.     int i=0;  
  11.     char errbuf[PCAP_ERRBUF_SIZE];  
  12.       
  13.     /* 获取本地机器设备列表 */  
  14.     if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1)  
  15.     {  
  16.         fprintf(stderr,"Error in pcap_findalldevs_ex: %s/n", errbuf);  
  17.         exit(1);  
  18.     }  
  19.       
  20.     /* 打印列表 */  
  21.     for(d= alldevs; d != NULL; d= d->next)  
  22.     {  
  23.         printf("%d. %s", ++i, d->name);  
  24.         if (d->description)  
  25.             printf(" (%s)/n", d->description);  
  26.         else  
  27.             printf(" (No description available)/n");  
  28.     }  
  29.       
  30.     if (i == 0)  
  31.     {  
  32.         printf("/nNo interfaces found! Make sure WinPcap is installed./n");  
  33.         return;  
  34.     }  
  35.   
  36.     /* 不再需要设备列表了,释放它 */  
  37.     pcap_freealldevs(alldevs);  
  38.       
  39.     char a;  
  40.     scanf(&a);  
  41.   
  42. }  

 

有关这段代码的一些说明

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

第二要记住,不是所有的操作系统都支持libpcap提供的网络程序接口,因此,如果我们想编写一个可移植的应用程序,我们就必须考虑在什么情况下, description 是 null。本程序中,我们遇到这种情况时,会打印提示语句"No description available"。

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

vs2008 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值