当前位置: 首页 > article >正文

qt network 整体框架

以下是 Qt 网络模块中 QNetworkInterface、TCP、UDP 及相关类的层次关系图及说明:

一、Qt 网络模块层次结构

 

┌─────────────────────────────────────────────────────────────┐

│ QtNetwork 模块 │

└───────────────────────────┬───────────────────────────────────┘

┌───────────────────────────┼───────────────────────────────────┐

│ 网络接口与地址信息 │

│ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────┐

│ │ QNetworkInterface │ │ QHostAddress │ │ QUrl │

│ │ - 物理/虚拟网卡 │ │ - IP地址(IPv4/IPv6) │ │ - URL解析│

│ │ - MAC地址 │ │ - 地址类型判断 │ └─────────┘

│ │ - 接口状态 │ │ - 地址转换 │

│ └─────────────────────┘ └─────────────────────┘

└───────────────────────────┼───────────────────────────────────┘

┌───────────────────────────┼───────────────────────────────────┐

│ 传输层协议 │

│ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────┐

│ │ TCP协议 │ │ UDP协议 │ │ SSL/TLS │

│ │ - QTcpSocket │ │ - QUdpSocket │ │ - QSslSocket│

│ │ - QTcpServer │ │ - QNetworkDatagram │ └─────────┘

│ │ - 可靠、面向连接 │ │ - 不可靠、无连接 │

│ │ - 顺序保证 │ │ - 高效、低延迟 │

│ └─────────────────────┘ └─────────────────────┘

└───────────────────────────┼───────────────────────────────────┘

┌───────────────────────────┼───────────────────────────────────┐

│ 应用层协议 │

│ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────┐

│ │ HTTP/FTP │ │ WebSocket │ │ 其他 │

│ │ - QNetworkAccessManager │ │ - QWebSocket │ │ - QDnsLookup│

│ │ - QHttpServer │ │ - 双向实时通信 │ └─────────┘

│ │ - REST API支持 │ └─────────────────────┘

│ └─────────────────────┘

└─────────────────────────────────────────────────────────────┘

二、关键类说明

1. 网络接口与地址信息
  • QNetworkInterface
    • 描述物理或虚拟网络接口(如网卡、WiFi、蓝牙)。
    • 提供接口状态(活跃 / 禁用)、MAC 地址、IP 地址列表等信息。
    • 核心方法
      • allInterfaces():获取所有网络接口。
      • allAddresses():获取所有接口的 IP 地址(返回 QList<QHostAddress>)。
  • QHostAddress
    • 存储和操作 IP 地址(IPv4/IPv6)。
    • 核心方法
      • isLoopback():判断是否为回环地址。
      • toIPv4Address():转换为 IPv4 格式。
      • toString():转换为字符串(如 "192.168.1.1")。
2. 传输层协议
  • TCP 相关类
    • QTcpSocket:TCP 客户端,用于连接服务器并收发数据。
    • QTcpServer:TCP 服务器,监听端口并处理客户端连接。
    • 特点
      • 可靠传输(数据有序、无丢失)。
      • 面向连接(需先建立连接再通信)。
  • UDP 相关类
    • QUdpSocket:UDP 通信的基础类,支持广播和组播。
    • QNetworkDatagram(Qt 5.8+):UDP 数据报的高级封装,简化地址管理。
    • 特点
      • 不可靠传输(可能丢包、乱序)。
      • 无连接(直接发送数据,无需提前建立连接)。
3. 应用层协议
  • QNetworkAccessManager
    • 高层 HTTP/FTP 客户端,支持 REST API、文件下载 / 上传。
    • 基于 QTcpSocket 实现,自动处理 HTTP 协议细节。
  • QWebSocket
    • 实现 WebSocket 协议(双向实时通信)。
    • 基于 QTcpSocket 或 QSslSocket 实现。

三、层次关系总结

  1. 底层支撑
    • QNetworkInterface 和 QHostAddress 提供网络接口和 IP 地址的基础信息,为上层协议服务。
  1. 传输层实现
    • TCP/UDP 是传输层核心协议,QTcpSocket/QUdpSocket 封装了底层 Socket API,直接依赖 QHostAddress 指定目标地址。
  1. 应用层封装
    • HTTP/WebSocket 等应用层协议基于 TCP 实现,通过 QNetworkAccessManager/QWebSocket 提供更便捷的接口,无需关心底层连接细节。

四、典型使用场景

场景

关键类

依赖关系

局域网用户发现

QUdpSocket, QHostAddress

- QUdpSocket 发送广播到 QHostAddress::Broadcast- QHostAddress 存储接收方 IP

TCP 聊天服务器

QTcpServer, QTcpSocket

- QTcpServer 监听 QHostAddress 指定的端口- QTcpSocket 处理客户端连接

HTTP 文件下载

QNetworkAccessManager

- 内部使用 QTcpSocket 实现 HTTP 协议- QHostAddress 解析服务器域名

多网卡设备选择特定接口

QNetworkInterface

- 通过 allInterfaces () 获取所有网卡- 选择活跃接口的 IP 地址(QHostAddress)

通过这种分层设计,Qt 网络模块既提供了底层 Socket 级的控制能力,又通过高层类简化了常见网络协议的开发,满足不同场景需求。

相关文章:

qt network 整体框架

以下是 Qt 网络模块中 QNetworkInterface、TCP、UDP 及相关类的层次关系图及说明&#xff1a; 一、Qt 网络模块层次结构 ┌─────────────────────────────────────────────────────────────┐ │ QtNetwork 模…...

C++ map基础概念、map对象创建、map赋值操作、map大小操作、map数据插入、map数据删除、map数据修改、map数据统计

map的使用频率很高&#xff0c;仅次于vector&#xff0c;先了解下pair的概念&#xff1a; pair 概念&#xff1a; template<class _Ty1, class Ty2> struct pair{ _Ty1 first; // 这两个可以是任意的类型 _Ty2 second; }; eg&#xff1a;pair<int, int> p(13,…...

(2025)Windows修改JupyterNotebook的字体,使用JetBrains Mono

(JetBrains Mono字体未下载就配置,这种情况我不知道能不能行,没做过实验,因为我电脑已经下载了,不可能删了那么多字体做实验,我的建议是下载JetBrains Mono字体,当你使用VsCode配置里面的JetBrains字体也很有用) 首先参考该文章下载字体到电脑上 VSCode 修改字体为JetBrains …...

小番茄C盘清理:专业高效的电脑磁盘清理工具

在使用电脑的过程中&#xff0c;我们常常会遇到系统盘空间不足、磁盘碎片过多、垃圾文件堆积等问题&#xff0c;这些问题不仅会导致电脑运行缓慢&#xff0c;还可能引发系统崩溃。为了解决这些问题&#xff0c;小番茄C盘清理应运而生。它是一款专业的C盘清理软件&#xff0c;能…...

CSS 预处理器与工具

目录 CSS 预处理器与工具1. Less主要特性 2. Sass/SCSS主要特性 3. Tailwind CSS主要特性 4. 其他工具PostCSSCSS Modules 5. 选择建议 CSS 预处理器与工具 1. Less Less 是一个 CSS 预处理器&#xff0c;它扩展了 CSS 语言&#xff0c;添加了变量、嵌套规则、混合&#xff0…...

AUTOSAR实战教程--标准协议栈实现DoIP转DoCAN的方法

目录 软件架构 关键知识点 第一:PDUR的缓存作用 第二:CANTP的组包拆包功能 第三:流控帧的意义 配置过程 步骤0:ECUC模块中PDU创建 步骤1:SoAD模块维持不变 步骤2:DoIP模块为Gateway功能添加Connection ​步骤3:DoIP模块为Gateway新增LA/TA/SA ​步骤4:PDUR模…...

【MySQL系列】MySQL 导出表数据到文件

博客目录 一、使用 SELECT INTO OUTFILE 语句基本语法参数详解注意事项实际示例 二、使用 mysqldump 工具基本语法常用选项实际示例 三、使用 MySQL Workbench 导出导出步骤高级选项 四、其他导出方法1. 使用 mysql 命令行客户端2. 使用 LOAD DATA INFILE 的逆向操作3. 使用编程…...

vue3:十五、管理员管理-页面搭建

一、页面效果 实现管理员页面,完成管理员对应角色的中文名称显示,实现搜索栏,表格基本增删改查,分页等功能 二、修改问题 1、修改搜索框传递参数问题 (1)问题图示 如下图,之前搜索后,传递的数据不直接是一个value值,而是如下图的格式 查询可知这里传递的数据定义的是…...

学习使用YOLO的predict函数使用

YOLO的 result.py #2025.1.3 """ https://docs.ultralytics.com/zh/modes/predict/#inference-arguments 对yolo 目标检测、实例分割、关键点检测结果进行说明https://docs.ultralytics.com/reference/engine/results/#ultralytics.engine.results.Masks.xy 对…...

零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)

本期内容涉及到很多前面的内容&#xff0c;因此复习后可以更好的了解本期内容 介绍 XXE -"xml external entity injection"即"xml外部实体注入漏洞"。 概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导…...

深入浅出Spring Security

一、Spring Security基本组件 Spring Security的设计理念是提供一种可插拔的、高度可定制的安全服务。其核心功能依赖于以下几个关键组件&#xff1a; Authentication (认证): 概念: 确认用户身份的过程&#xff0c;即验证“你是谁”。核心类: Authentication 接口&#xff0c…...

基于51单片机的红外防盗及万年历仿真

目录 具体实现功能 设计介绍 资料内容 全部内容 资料获取 具体实现功能 具体功能&#xff1a; &#xff08;1&#xff09;实时显示年、月、日、时、分、秒、星期信息&#xff1b; &#xff08;2&#xff09;红外传感器&#xff08;仿真中用按键模拟&#xff09;检测是否有…...

Doris 数据库深度解析:架构、原理与实战应用

一、Doris 的架构与原理 1. 架构组成 Doris 是一个分布式 MPP&#xff08;大规模并行处理&#xff09;数据库&#xff0c;它的架构主要由以下几部分组成&#xff1a; FE&#xff08;Frontend&#xff09;&#xff1a;负责管理元数据、解析 SQL 查询、优化查询计划&#xff0…...

【飞腾AI加固服务器】全国产化飞腾+昇腾310+PCIe Switch的AI大模型服务器解决方案

以下是全国产化飞腾AI加固服务器采用飞腾昇腾PCIe Switch解决方案&#xff1a; &#x1f5a5;️ 一、硬件架构亮点 ‌国产算力双擎‌ ‌飞腾处理器‌&#xff1a;搭载飞腾FT2000/64核服务器级CPU&#xff08;主频1.8-2.2GHz&#xff09;&#xff0c;支持高并发任务与复杂计算&a…...

【术语扫盲】评估指标Precision、Recall、F1-score、Support是什么含义?

一、背景 Precision、Recall、F1-score、Support 是分类问题中最常用的评估指标&#xff0c;它们是机器学习、深度学习、数据挖掘中非常基础也非常重要的术语。 二、 详细解释 指标含义公式Precision&#xff08;精准率&#xff09;预测为某类的样本中&#xff0c;有多少是真…...

应用层协议:HTTPS

目录 HTTPS&#xff1a;超文本传输安全协议 1、概念 2、通信过程及关键技术 2.1 通信过程 1> TLS握手协商&#xff08;建立安全通道&#xff09; 2> 加密数据传输 2.2 关键技术 1> 对称加密算法 2> 非对称加密 3> 对称加密和非对称加密组合 4> 数…...

【ArcGIS技巧】—村庄规划规划用地规划状态字段生成工具

"国土空间规划后续也是走向数据治理&#xff0c;数据建库已经是涉及到城市规划、建筑、市政、农业、地理信息、测绘等等方方面面。不得不说以后数据库建设跟维护&#xff0c;是很多专业的必修课。小编就湖南省的村庄规划建库过程中规划用地用海中规划状态字段写了个小工具…...

React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用

React 实战项目&#xff1a;实时聊天应用 欢迎来到本 React 开发教程专栏 的第 28 篇&#xff01;在前 27 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和架构模式等核心知识。这一次&#xff0c…...

Go语言中的if else控制语句

if else是Go语言中最基础也最常用的条件控制语句&#xff0c;用于根据条件执行不同的代码块。下面我将详细介绍Go语言中if else的各种用法和特性。 1. 基本语法 1.1. 最简单的if语句 if 条件表达式 {// 条件为true时执行的代码 } 示例&#xff1a; if x > 10 {fmt.Prin…...

【PCIe总线】-- inbound、outbound配置

PCI、PCIe相关知识整理汇总 【PCIe总线】 -- PCI、PCIe相关实现 由之前的PCIe基础知识可知&#xff0c;pcie的组成有&#xff1a;RC&#xff08;根节点&#xff09;、siwtch&#xff08;pcie桥&#xff09;、EP&#xff08;设备&#xff09;。 RC和EP&#xff0c;以及EP和EP能…...

分布式锁实战:Redisson vs. Redis 原生指令的性能对比

分布式锁实战&#xff1a;Redisson vs. Redis 原生指令的性能对比 引言 在DIY主题模板系统中&#xff0c;用户可自定义聊天室的背景、图标、动画等元素。当多个运营人员或用户同时修改同一模板时&#xff0c;若没有锁机制&#xff0c;可能出现“甲修改了背景色&#xff0c;乙…...

MyBatis中foreach集合用法详解

在 MyBatis 中&#xff0c;<foreach> 标签用于遍历集合&#xff08;Collection、List、Array、Map&#xff09;&#xff0c;常用于构建动态 SQL 语句&#xff08;如 IN 查询、批量插入等&#xff09;。以下是详细用法和示例&#xff1a; 核心属性 属性描述collection必填…...

react+taro 开发第五个小程序,解决拼音的学习

1.找一个文件夹 cmd 2.taro init 3.vscode 找开该文件夹cd help-letters 如&#xff1a;我的是(base) PS D:\react\help-letters> pnpm install 4.先编译一下吧。看下开发者工具什么反应。 pnpm dev:weapp 5.开始规则。我用cursor就是不成功。是不是要在这边差不多了&…...

高防IP可以防护什么攻击类型?企业网络安全的第一道防线

“高防IP”成为企业构建网络安全防护体系的重要一环。尤其是对于金融、电商、游戏、政务等业务高度依赖网络稳定性的行业而言&#xff0c;确保系统724小时正常运行已经成为基本要求。高防IP到底可以防护哪些攻击类型&#xff1f;它又是如何帮助企业抵御风险、保障服务稳定运行的…...

Wireshark使用教程(含安装包和安装教程)

Wireshark使用入门教程 0.资源下载以及软件安装1.Wireshark中无法显示网卡列表2.Wireshark抓取H264过程 0.资源下载以及软件安装 参考blog: 抓包神器wireshark安装保姆级教程   压缩包下载&#xff1a;Wireshark安装包 1.Wireshark中无法显示网卡列表 Wireshark中无法显示网…...

Asp.Net Core基于StackExchange Redis 缓存

NuGet安装 StackExchange.Redis Microsoft.Extensions.Options 0. appsettings.json初始化配置 {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHos…...

【Linux】SSH:免密登录

配置 SSH 的免密登录&#xff08;基于公钥认证&#xff09;可实现无需输入密码即可登录远程主机&#xff0c;常用于自动化脚本、服务器集群、DevOps 等场景。 生成本地 SSH 密钥对&#xff08;若尚未存在&#xff09; 在本地客户端执行&#xff1a; ssh-keygen -t rsa -b 409…...

kafka(windows)

目录 介绍 下载 配置 测试 介绍 Kafka是一个分布式流媒体平台&#xff0c;类似于消息队列或企业信息传递系统。 下载 Kafka对于Zookeeper是强依赖&#xff0c;所以安装Kafka之前必须先安装zookeeper 官网&#xff1a;Apache Kafka 下载此安装包并解压 配置 新建log…...

深度学习习题3

1.训练神经网络过程中&#xff0c;损失函数在一些时期&#xff08;Epoch&#xff09;不再减小, 原因可能是&#xff1a; 1.学习率太低 2.正则参数太大 3.卡在了局部最小值 A1 and 2 B. 2 and 3 C. 1 and 3 D. 都是 2.对于分类任务&#xff0c;我们不是将神经网络中的随机权重…...

勒让德多项式

勒让德多项式 (Legendre) 当区间为 [ − 1 , 1 ] [-1,1] [−1,1]&#xff0c;权函数 ρ ( x ) 1 ρ(x)1 ρ(x)1时&#xff0c;由 1 , x , . . . , x n , . . . {1,x,...,x^n,...} 1,x,...,xn,...正交化得到的多项式称为勒让德多项式&#xff0c;并用 P 0 ( x ) , P 1 ( x ) ,…...