二、子线程输出网卡捕获的数据
创建multithread源文件进行子线程的配置,设置相应的工作状态表示。
multhread::run()
使用while循环,因为执行状态中需要进行不断的捕获
如果isDone成立了,那么表示捕获动作进行终止,就退出,否则就获取下一个数据包,并进行打印时间戳。
在mainwindow中添加
multhread* thread = new multhread; 并没有把这个子线程挂到主线程的对象树上。
需要考虑的问题 主线程和子线程之间如何进行数据之间的交互
这里依旧用的是通过信号和槽,在capture里去定义发送信号
调试的过程中有些内容还没实现怎么调试?用qDebug
format 用于管理数据包的一些字段
emit send(data)
datapackage:
从wireshark的格式可以看出他能显示的数据的内容包括编号,数据包的长度,格式,源、目的、基础信息
视频中出现的快捷键 选中属性,alt + enter
ethernetPackageHandle从mac层开始解析,传参第二个直接储存解析结果方便获取
基于QT的仿wireshark网络包捕获程序
项目技术:QT+socket套接字编程+libpcap网络嗅探+数据包解析
1.注册qRegisterMetaType自定义类型依靠信号与槽实现跨线程数据通信
2.pcap获取虚拟机设备并显示到combox中切换网卡
3.子线程捕获数据包并标记,主线程在tablewidget中对数据包内容按时间戳列举
4.选中的数据包以treeWidget树形结构对MAC、IP、TCP/ARP头部字段解析展示
标签:QT,multhread,捕获,线程,数据包,wireshark From: https://www.cnblogs.com/synapse331/p/17739995.html