WinPcap笔记(2):获取设备列表
通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表。WinPcap提供了pcap_findalldevs_ex()函数来实现这个功能:返回一个pcap_if结构的链表,这样的结构都包含了一个适配器的详细信息。pcap_findalldevs_ex()函数的具体格式如下:
pcap_findalldevs_ex(char * source,struct pcap_rmthauth* auth,pcap_if_t** alldevs,char* errbuf);
函数创建一个可以被函数pcap_open()打开的网络设备链表。这个函数不但可以列出本地机器的所有设备,还可以列出远程机器的所有设备。
参数含义:
source:一个字符指针,保存来源的位置,会在查找适配器的时候检查,在这里设置成PCAP_SRC_IF_STRING;
auth:一个指向pcap_rmtauth结构体的指针。这个指针保存需要远程设备捕获协议认证的信息。由于我们捕本地设备,因此设置成NULL;
alldevs:一个pcap_if_t结构体指针,函数返回时用来保存找到的适配器的信息;
errbuf:用来保存错误信息;
返回值:
如果返回0,表示函数运行成功,此时alldevs不可能是NULL,说明找到合适的适配器,同过alldevs参数返回;如果返回-1,发生错误,或者没有在本地找到合适的适配器;
pcap_if_t结构体定义如下:
pcap_if* next;//指向链表的下一个节点,如果不为空指向一个pcap_if元素;
char* name;//字符串指针,存储传向pcap_open_live函数的设备名称;
char* description;//设备的描述;
pcap_addr* addresses;//这项这个设备接口地址链表的第一个元素;
u_int flags;//当前唯一的值是PCAP_IF_LOOPBACK,当当前接口是回路接口的时候设置;
当我们完成设备列表的使用后,应当调用pcap_freealldevs()函数释放内存资源。
下面是获取设备列表并打印具体信息的代码:
#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/*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);elseprintf(" (No description available)\n");}if (i == 0){printf("\n No interfaces found!\n");exit(1);}//freepcap_freealldevs(alldevs);
return 0;
}
结果如下:
WinPcap笔记(2):获取设备列表相关推荐
- WinPcap网络编程入门——1. 获取设备列表
WinPcap网络编程入门--1. 获取设备列表 系列教程章节直达: Winpcap网络编程入门--1. 获取设备列表: 上节中我们简单介绍了 WinPcap 的相关资料,配置好了开发环境,现在就让我 ...
- 打印机无法从服务器获取信息,win10系统安装打印机提示无法从Windows Update获取设备列表怎么办...
最近有win10系统用户到本站咨询这样一个情况,就是要安装打印机的时候,突然提示无法从Windows Update获取设备列表怎,遇到这样的问题该怎么办呢,本文就给大家讲解一下win10系统安装打印机 ...
- WinPcap获取设备列表
最近在自学基于winpcap编程,多多少少中间会遇到一些问题,这里记录也分享一下中间的一些问题. 声明:实验基于WinPcap中文技术文档 再开始之前,我们需要在本机安装winpcap驱动程序和下载所 ...
- WinPcap编程3——获取网络适配器列表
WinPcap应用程序的第一件事情就是获得已连接的网络适配器列表. WinPcap提供了pcap_findalldevs_ex() 函数来实现该功能: 它返回一个pcap_if结构的链表,每个这样的结 ...
- WinPcap笔记(9):保存数据包到堆文件
这里我们将捕获到的数据包保存到堆文件里.堆文件的格式是libpcap的一种.这种格式中,包含了被捕捉到的包的二进制数据,并且,这种格式是许多网络工具所使用的一种标准,这些工具包括WinDump,Eth ...
- WinPcap笔记(4):打开适配器并捕获数据包
前面已经能够得到是设备的信息了,现在开始做真正有意义的事情:打开适配器并捕获数据包.这里将用到函数pcap_open(),下面是函数的具体格式: pcap_t* pcap_open ( const c ...
- vc6可编译的 linux 源码,winpcap+vc6编译环境配置,以及获取网络设备列表的源代码...
winpcap学习手记 (By 风色鸟) winpcap要使用VC6 第一次使用VC6,真的觉得配置很烦,而且觉得不可见.不可控.相比,还是喜欢linux下面的makefile. 尽管如此,还是需要把 ...
- android 高版本(设备11的)wifi扫描,获取wifi列表
需求场景:智能设备有wifi模块,整套wifi功能,包括:搜索wifi列表,wifi连接,wifi切换,wifi忘记密码等. 高版本(安卓8以上)为了省电,节流,谷歌对wifi限制越来越多,安卓9以上 ...
- dotnet 读 WPF 源代码笔记 插入触摸设备的初始化获取设备信息
在 WPF 触摸应用中,插入触摸设备,即可在应用里面使用上插入的触摸设备.在 WPF 使用触摸设备的触摸时,需要获取到触摸设备的信息,才能实现触摸 获取触摸设备插入 在 WPF 中,通过 Window ...
最新文章
- 使用级联样式表的好处在于_现在都在使用益阳云终端解决方案了,原因就在于这些好处...
- 贵州大学开题报告计算机,贵州大学毕业论文开题报告.docx
- svn 提交到远程仓库_聊聊如何从SVN迁移源码到Git仓库
- 通过反射写一个通用的设置某个对象的某个属性为指定的值
- 【转】Ubuntu 16.04 远程桌面
- Webpack实战(七):简单搞懂PostCSS的用法及与一些插件的用法
- BG.Hive - part3
- 计算机主机与显示器的接口类型,电脑显示器接口类型哪个好?VGA、DVI、HDMI、DP接口区别对比科普...
- Excel的序列号转换的算法
- Python操作Redis之mset和mget
- 用C++实现小游戏之石头剪刀布
- 基于 Verilog 的经典数字电路设计(8)计数器
- 我来告诉你,草根程序员如何进入BAT
- 大型网站架构:Flickr网站体系结构分析(转)
- Cheat Engine 在mac最新系统无法安装的解决办法
- 输入一行字符,以回车符作为输入结束的标志。统计其中英文字母、数字字符和其他字符的个数。
- 安全专家郭盛华:黑客是如何入侵手机的?
- C++中的TEXT函数
- 安装苹果cms时提示不支持fileinfo解决方法
- PHP接入网易易盾验证码
热门文章
- C++ 字符串编程训练2
- POJ 3189 Steady Cow Assignment
- 浙大计算机专硕培养方案,浙江大学硕士研究生培养方案
- 大型计算机变形,计算机变形病毒的主要特征和发展趋势
- python超市售货统计程序_用Python实现简易超市售货系统
- python游戏循环设置_Pygame:游戏循环前的初始菜单
- 位置服务器管理器,查看 DIMM 位置
- ajax省市二级联动硬编码,AJAX请求接受硬编码的JSON,但不接受软编码
- jq查找字段忽略html标签,jQuery过滤HTML标签并高亮显示关键字的方法
- python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...