winPcap_3_获取设备列表

获取设备列表

int pcap_findalldevs_ex  ( char *  source,
  struct pcap_rmtauth *  auth,
  pcap_if_t **  alldevs,
  char *  errbuf
 ) 

  ·功能:获得已连接的网络适配器列表;

  ·该函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息;

  ·pcap_if结构链表中:数据域 namedescription 表示一个适配器名称和一个可以让人们理解的描述;

  `errbuf:一旦发生错误,这个参数将会被libpcap写入字符串类型的错误信息;


struct pcap_rmtauth{
  int    type
     //Type of the authentication required.
  char *    username
     //Zero-terminated string containing the username that has to be used on the remote machine for authentication.
  char *    password
     //Zero-terminated string containing the password that has to be used on the remote machine for authentication.
};
 

pcap_rmtauth struct

struct  pcap_if
{
    pcap_if *    next
    //if not NULL, a pointer to the next element in the list; NULL for the last element of the list
    char *    name
    //a pointer to a string giving a name for the device to pass to pcap_open_live()
    char *    description
    //if not NULL, a pointer to a string giving a human-readable description of the device
    pcap_addr *    addresses
    //a pointer to the first element of a list of addresses for the interface
    u_int    flags
    //PCAP_IF_ interface flags. Currently the only possible flag is PCAP_IF_LOOPBACK, that is set if the interface is a loopback interface.
};

pcap_if struct

struct  pcap_addr
{
    pcap_addr *    next
    //if not NULL, a pointer to the next element in the list; NULL for the last element of the list
    sockaddr *    addr
    //a pointer to a struct sockaddr containing an address
    sockaddr *    netmask
    //if not NULL, a pointer to a struct sockaddr that contains the netmask corresponding to the address pointed to by addr.
    sockaddr *    broadaddr
    //if not NULL, a pointer to a struct sockaddr that contains the broadcast address corre­ sponding to the address pointed to by addr; may be null if the interface doesn‘t support broadcasts
    sockaddr *    dstaddr
    //if not NULL, a pointer to a struct sockaddr that contains the destination address corre­ sponding to the address pointed to by addr; may be null if the interface isn‘t a point- to-point interface
};

pcap_addr struct

void pcap_freealldevs  ( pcap_if_t *  alldevsp   )   

  ·功能:Free an interface list returned by pcap_findalldevs().(pcap_freealldevs() is used to free a list allocated by pcap_findalldevs().)

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

获取设备列表.c

  编译:在Windows平台上,您需要创建一个工程,并按照 使用WinPcap编程 里的步骤做。 然而,我们建议您使用WinPcap developer‘s pack ( 详情请访问WinPcap网站, http://www.winpcap.org ), 因为它提供了很多已经配置好的范例,包括本教程中的所有示例代码,以及在编译运行时需要的 包含文件(include)库(libraries)

  结果:

  前部分为name,后面部分为description;

时间: 2024-12-25 04:06:48

winPcap_3_获取设备列表的相关文章

获取设备列表的API

通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表.libpcap和WinPcap都提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息.值得注意的是,数据域 name 和 description 表示一个适配器名称和一个可以让人们理解的描述. 在vs2008中调试代码的步骤: 运行环境准备:WpdPack_4_1_2安装包 1:将WpdPack_4_1_

WinPcap中获取设备列表的实验报告

实验目的 了解winpcap并对其中的获取设备列表的代码进行编译,了解Microsoft Visual studio2010,并用它编译 实验步骤 1.新建一个项目,模板选择Visual C++,右边选择win32控制台,名字自设. 2.把已获得的代码复制进去,进行编译,发现错误,进行调式,把一下项目设置好 项目-->**属性(alt+F7)配置属性-->清单工具-->输入和输出-->嵌入清单-->否 项目-->**属性(alt+F7)配置属性-->C/C++--

WinPcap的开发与应用:获取设备列表

获取设备列表 1.通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表.libpcap和WinPcap都提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息.值得注意的是,数据域 name 和 description 表示一个适配器名称和一个可以让人们理解的描述. 下列代码能获取适配器列表,并在屏幕上显示出来,如果没有找到适配器,将打印错误信息. 有关这段代

WinPcap 之 获取设备列表

(1)将文件解压到C盘 2.打开WinPcap中文技术文档 --> 获取设备列表(复制代码) 3.开始 --> 所有程序 --> Microsoft Visual Studio 2010文件夹 --> Microsoft Visual Studio 2010 4.文件 --> 新建 --> 项目 (输入 名称 和 位置) --> 确定 --> 粘贴代码 5.注意事项 项目-->**属性(alt+F7) 配置属性-->清单工具-->输入和输出

获取设备列表(Microsoft Visual Studio 2010)

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

Microsoft Virsual 获取设备列表

实验过程: 1.打开Microsoft Visual Studio 2010,点击"文件"--"新建"--"项目",选择"MFC应用程序"并设置项目名. 2.在界面上设置提示信息--打开"工具箱"选择"combo box",调整大小. 3.删除C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe,然后运

获取设备列表(Microsoft Visual Studio 2010)含界面设计

同上次获取设备列表(Microsoft Visual Studio 2010)类似,新建项目->MFC...->选基于对话框->完成           类视图点开项目双击CaaaDlg 点击 CaaaDlg::OnInitDialog将上次的代码复制至TODO处,然后像上次配置路径: 对编译器做如下设置: 项目-->**属性(alt+F7)配置属性-->C/C++-->常规-->附加包含目录-->(是把头文件所在的文件路径添加到附加目录中) 项目-->

获取设备列表

程序主要分为三段 获取本地机器设备列表 打印列表 释放设备列表 新建一个工程粘贴如下代码 并加入pcap头文件 然后将设置做如下更改 更改后如下所示 实验结果如下图所示 可以用Ctrl+F5调出

WinPcap获取设备列表

新建一个工程粘贴如下代码 并加入pcap头文件 然后将设置做如下更改 更改后如下所示 实验结果如下图所示 可以用Ctrl+F5调出 程序主要分为三段 获取本地机器设备列表 打印列表 释放设备列表