1.pcap_if_t结构体
typedef struct pcap_if pcap_if_t;
struct pcap_if {
struct pcap_if *next;
char *name; /* 适配器名字*/
char *description; /* 适配器描述 */
struct pcap_addr *addresses;/*适配器地址*/
bpf_u_int32 flags; /* 适配器接口标识符,值为PCAP_IF_LOOPBACK */
};
2. pcap_findalldevs函数
int pcap_findalldevs(pcap_if_t **, char *);
说明:用来获得网卡的列表
参数: 指向pcap_if_t**类型的列表的指针的指针; char型指针,当打开列表错误时返回错误信息
返回值: 为int型,当显示列表失败时返回-1
3.测试例子
[C++] 纯文本查看 复制代码 #include <QCoreApplication>
#include <QDebug>
#include "pcap.h"
//打印设备列表信息
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
pcap_if_t *alldevs; //所有网络适配器
pcap_if_t *d; //选中的网络适配器
int i = 0;
char errbuf[PCAP_ERRBUF_SIZE];
if(pcap_findalldevs(&alldevs, errbuf) == -1)//获取网卡列表道中
{
qDebug() << errbuf;
}
for(d = alldevs; d; d = d->next)
{
qDebug() << ++i << d->name;
if(d->description)
qDebug() << d->description;
else
qDebug("(No description available)");
}
if(0 == i)
{
qDebug("No interfaces found! Make sure WinPcap is installed.");
}
pcap_freealldevs(alldevs);
return a.exec();
}
|