Qt5配置winpCap
在网上查了很多资料,搞了差不多一天总算解决Qt5使用winPcap配置的问题了!记录一下 以便后续忘记
1、下载winpcap4.1.3,百度即可搜索到
2、下载winpCap开发者工具包http://www.winpcap.org/devel.htm
3、新建Qt控制台工程
4、在.pro文件中添加如下代码 主要是配置头文件路径和库路径 由于我是放在C盘的,所以路径如下 路径可以自己定义
INCLUDEPATH+=C:/WpdPack_4_1_2/WpdPack/Include
LIBS+=C:/WpdPack_4_1_2/WpdPack/Lib/x64/wpcap.lib Packet.lib
LIBS+=C:\WpdPack_4_1_2\WpdPack\Lib\libwpcap.a libpacket.a
之前没有配置好路径 一直出现lnk2019的错误 注意:一定是x64下的lib文件 因为下载的开发者包在lib的路径下有
补充:其实可以将下载下来的winpcap开发者包的include和lib文件夹下面的所有内容复制到Qt安装目录下的include和lib文件夹下,在.pro文件中 只需添加如下代码即可
LIBS+=wpcap.lib Packet.lib
LIBS+=libwpcap.a libpacket.a//经过测试 这句可有可无
5、在CPP中添加如下代码
#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;elseqDebug()<<"No description available ";}if(0==i){qDebug()<<"No interfaces found!Make sure WinPcap is installed";}pcap_freealldevs(alldevs);return a.exec();
}
6、截图
7、提示
a.Qt Creator的编译器不好!我在使用时先去删掉之前编译的debug文件,在使用绝对路径 在使用
LIBS+=wpcap.lib Packet.lib(这是将winpcap的include和lib文件夹下的内容,Qt目录下的的include和lib中)
8、winpcap获取制定是配置的包
代码如下:
#include <QCoreApplication>
#include<QDebug>
#define HAVE_REMOTE
#include"pcap.h"
//#include<remote-ext.h>
#pragma comment(lib,"Iphlpapi.lib")
#define TRACE(s) OutputDebugString(TEXT(s));
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);pcap_if_t *alldevs;pcap_if_t *d;int inum;int i=0;pcap_t *adhandle;int res;char errbuf[PCAP_ERRBUF_SIZE];struct tm *ltime;char timestr[16];struct pcap_pkthdr *header;const u_char *pkt_data;time_t local_tv_sec;/* 获取本机设备列表 */if (pcap_findalldevs/*_ex*/(/*PCAP_SRC_IF_STRING, NULL,*/ &alldevs, errbuf) == -1){fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);exit(1);}/* 打印列表 */for(d=alldevs; d; 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("\nNo interfaces found! Make sure WinPcap is installed.\n");return -1;}printf("Enter the interface number (1-%d):",i);scanf("%d", &inum);if(inum < 1 || inum > i){printf("\nInterface number out of range.\n");/* 释放设备列表 */pcap_freealldevs(alldevs);return -1;}/* 跳转到已选中的适配器 */for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);/* 打开设备 */if ( (adhandle= pcap_open(d->name, // 设备名65536, // 要捕捉的数据包的部分// 65535保证能捕获到不同数据链路层上的每个数据包的全部内容PCAP_OPENFLAG_PROMISCUOUS, // 混杂模式1000, // 读取超时时间NULL, // 远程机器验证errbuf // 错误缓冲池) ) == NULL){fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);/* 释放设列表 */pcap_freealldevs(alldevs);return -1;}printf("\nlistening on %s...\n", d->description);/* 释放设备列表 */pcap_freealldevs(alldevs);/* 获取数据包 */while((res = pcap_next_ex( adhandle, &header, &pkt_data)) >= 0){if(res == 0){/* 超时时间到 */TRACE("Read Packet TimeOut!!");continue;}static double m_Packet_Count = 0;static DWORD m_PacketsLen = 0; //包的长度static DWORD m_TickCount = 0;static double m_Speed = 0.0;m_PacketsLen+=header->len;//接受包的总长度m_Packet_Count ++;if(GetTickCount() - m_TickCount > 1000)//每秒读取计算一次。GetTickCount()返回的是毫秒数{m_Speed = m_PacketsLen/1000.0;//speed .单位kbpsm_TickCount = GetTickCount();//返回从启动到当前经过的毫秒数m_PacketsLen = 0;printf("Packets:%.0f/s Speed:%.3f Kbps\r",m_Packet_Count,m_Speed);m_Packet_Count = 0;}}if(res == -1){printf("Error reading the packets: %s\n", pcap_geterr(adhandle));return -1;}return a.exec();
}
说明:需要添加如下内容 才可以在调用时,使用pacp_open,否则只能使用其他的函数去打开适配器。
Qt5配置winpCap相关推荐
- QT配置winpcap
Qt5配置winpCap 在网上查了很多资料,搞了差不多一天总算解决Qt5使用winPcap配置的问题了!记录一下 以便后续忘记 1.下载winpcap4.1.3,百度即可搜索到 2.下载winpCa ...
- 在Visual Studio 2005下配置WinPcap开发环境
在Visual Studio 2005下配置WinPcap开发环境 http://www.winpcap.org/archive/ 4.1beta5_WpdPack.zip http://www.wi ...
- codeblocks配置winpcap开发环境
转载请注明出处,谢谢_ (:з」∠)_ 起因 最近作业要用Winpcap开发包分析.pcap文件实现报文字段的识别-本来打算用Visual Studio写,不过想起以前打OJ的时候都用Code::Bl ...
- 一步一步开发sniffer(Winpcap+MFC)(一)工欲善其事,必先配环境——配置winpcap开发环境
0.说在前面的话 1) 本文将以一个初学者的角度,一步一步几乎是从0开始讲述如何完成一个基于winpcap+MFC的sniffer(嗅探器)当然我指的"0"并不是指连编程都不会,如 ...
- meo学习笔记6:VS2017+ Qt5.*配置安装过程的问题记录
VS2017+ Qt5.12.*配置安装过程的问题记录 1. 前言 之前一直用的是vs2010+qt4.8.6,最近想学下qt5,索性安装qt5,并在vs2017下进行编辑,顺便也安装Qt Creat ...
- 关于嵌入式Qt5配置环境变量导致鼠标显示与隐藏
Qt版本:Qt5.12.9 结论: 不写QT_QPA_EVDEV_MOUSE_PARAMETERS环境变量则不显示鼠标,反之,环境变量配置正确则显示鼠标 如设置 Qt环境变量 export QT_QP ...
- socket编程之DEV C++配置winpcap开发环境并编写网络嗅探器sniffer
欢迎关注我的个人博客:www.zuzhiang.cn 期末计算机网络课程设计让做一个网络嗅探器,要求可以检测和选择网卡,并打开到混杂模式,监听局域网中的所有数据包并解析出所用网络协议以及首部各个字段的 ...
- win10在Dev-C++中配置winpcap
如有错误欢迎指正 首先要去官网下载winpcap安装包和开发包,官网 WinPcap - Home 点击Download 点击installer for windows 下载完winpcap安装包 ...
- Dev-C++ 配置 WinPcap 开发环境
VC++ 6.0实在是太老了,自己并不愿意在这个平台上开发,所以转而使用Dev-C++,以下是综合网上的教程和自己的试验总结出的用Dev-C++进行WinPcap网络开发的所需的环境配置工作: 首先是 ...
最新文章
- jedis ShardedJedisPool的 HASH一致性算法(一)从String 的hashcode说起
- c++中ifstream一次读取整个文件
- silverlight 打开html_在Silverlight中嵌入HTML或aspx页面-阿里云开发者社区
- 右移函数(字符串,数组)
- android开发 文件分享到应用,Android开发之——7.0适配之应用之间共享文件(FileProvider)...
- C/C++ memmove与memcpy的区别及实现
- 利用计算机打字教学设计,第6课 争当打字小能手教学设计
- 不能编辑_解决cass9.0双击不能编辑文字和图块
- 恒大继续押宝造车 9.3亿美元收购NEVS的51%股权
- 李开复周鸿祎谈乔布斯:iPad做了经典减法
- Cookie对象常用属性
- CMU 15-213 Introduction to Computer Systems学习笔记(18) Dynamic Memory Allocation: Basic Concepts
- 工具DebugView、PCHunter、Procexp、Procmon
- selenium所有检测点和绕过方式[运行命令后被检测/打开就被检测/环境检测]
- Linux修改网卡地址(临时/永久)
- 来看看你的云栖社区2017年度总结
- Java中关于数组的初始化方式
- Nacos 配置管理
- 简易教程:教你如何使用Meshlab提取已有的三维模型的结构点云
- 解决删除文件时出现“该项目不在XX中,请确认该项目的位置然后重试”的提示
热门文章
- IBM MQ新建队列管理器时报错AMQ 7077错误
- Linux系列教程——Linux基本权限、Linux特殊权限、LinuxACL控制、Linux输入输出
- android_真机调试_安装包解析失败
- 漂亮的网页动态飘花灯笼特效代码
- 温度历史数据php,历史天气API接口_免费数据接口 - 极速数据
- [软件项目管理] 第四章 软件项目进度管理 选择题解析
- 一枚程序猿的MacBook M1详细体验报告
- c语言中cv的作用,c ++ - OpenCV的cvWaitKey()函数有什么作用?
- linux ibm 多路径,IBM V7000多路径解决
- V7000存储底层结构原理+V7000存储数据恢复案例