c++ winpcap开发(1)
来源:互联网 发布:网路和网络 编辑:程序博客网 时间:2024/06/07 22:52
获取设备列表
通常,基于WinPcap的应用程序的第一件事是获取附加网络适配器的列表。libpcap和WinPcap都为此提供了pcap_findalldevs_ex()函数:该函数返回一个pcap_if结构的链表,每个结构都包含有关连接的适配器的综合信息。特别地,字段名称和描述分别包含对应设备的名称和人类可读描述。
以下代码检索适配器列表,并在屏幕上显示,如果没有找到适配器,则打印错误。
#include "pcap.h"main(){ pcap_if_t *alldevs; pcap_if_t *d; int i=0; char errbuf[PCAP_ERRBUF_SIZE]; /* Retrieve the device list from the local machine */ 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); } /* Print the list */ 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; } /* We don't need any more the device list. Free it */ pcap_freealldevs(alldevs);}
关于这段代码的一些意见。
首先,像其他libpcap函数一样,pcap_findalldevs_ex()具有一个errbuf参数。此参数指向由libpcap填充的字符串,如果出现问题,则说明错误。
其次,请记住,并不是libpcap支持的所有操作系统都提供了网络接口的描述,因此,如果我们要写一个便携式应用程序,我们必须考虑以下情况:描述为null:我们打印字符串“No description available”in那个情况
最后注意,当我们完成它时,我们用pcap_freealldevs()一次释放列表。
我们来尝试编译并运行第一个示例的代码。为了在Unix或Cygwin下编译它,只需输入:
gcc -o testprog testprog.c -lpcap
假设我们编译了这个程序,我们来尝试运行它。在特定的WinXP工作站上,我们选择的结果是
1. \ Device \ NPF_ {4E273621-5161-46C8-895A-48D0E52A0B83}(Realtek RTL8029(AS)以太网适配器) 2. \ Device \ NPF_ {5D24AE04-C486-4A96-83FB-8B5EC6C7F430}(3Com EtherLink PCI)
阅读全文
1 0
- c++ winpcap开发(1)
- Winpcap网络开发库入门,分类: C/C++/VC++
- winpcap-1
- winpcap 编程C|C++
- winpcap 应用于C++builder
- winpcap一些开发实践
- WinPcap开发心得
- 搭建WinPcap开发环境
- c++ winpcap开发(2)
- c++ winpcap开发(3)
- c++ winpcap开发(4)
- c++ winpcap开发(5)
- c++ winpcap开发(6)
- c++ winpcap开发(7)
- c++ winpcap开发(8)
- c++ winpcap开发(9)
- c++ winpcap开发(10)
- Winpcap 开发教程
- CodeForces
- 【NOIP2017】SummerTraining0720
- android: Apostrophe not preceded by \ 错误
- 2017.7.20-学习日志-大数据
- 数据结构之排序(1)
- c++ winpcap开发(1)
- linuxrhel6.5虚拟机封装
- Spring AOP动态代理原理与实现方式
- Python特殊语法:filter、map、lambda、reduce
- java继承基本概念练习
- Java枚举中嵌套枚举用例
- windbg 调试bug
- CSS Sprite 学习笔记
- CADisplayLink翻译