【Qt】:网络编程

网络编程

  • 一.UDP Socket
    • 1.回显服务器
    • 2.回显客户端
  • 二.TCP Socket
    • 1.回显服务器
    • 2.回显客户端
  • 三.HTTP Client
    • 1.常见的APL
    • 2.给服务器发送⼀个GET请求.
  • 四.音视频

前置知识:网络。如果不了解,可以看我的博客网络部分。

在进⾏⽹络编程之前,需要在项⽬中的 .pro ⽂件中添加 network 模块.添加之后要⼿动编译⼀下项⽬,使QtCreator能够加载对应模块的头⽂件。

一.UDP Socket

要的类有两个. QUdpSocket 和 QNetworkDatagram

QUdpSocket 表⽰⼀个UDP的socket⽂件.

在这里插入图片描述

QNetworkDatagram 表⽰⼀个UDP数据报

在这里插入图片描述

1.回显服务器

1.首先引入网络模块。

在这里插入图片描述

2.创建对象并进行初始化

在这里插入图片描述

3.实现 process ,完成处理请求的过程

  1. 读取请求并解析
  2. 根据请求计算响应
  3. 把响应写回到客⼾端

在这里插入图片描述

2.回显客户端

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二.TCP Socket

核⼼类是两个: QTcpServer 和 QTcpSocket。

QTcpServer ⽤于监听端和获取客⼾端连接

在这里插入图片描述

QTcpSocket ⽤⼾客⼾端和服务器之间的数据交互.

在这里插入图片描述

1.回显服务器

1.大体框架,创建TcpServer对象

在这里插入图片描述

2.编写槽函数:获取新连接后的操作

在这里插入图片描述

2.回显客户端

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三.HTTP Client

关键类主要是三个.QNetworkAccessManager , QNetworkRequest ,QNetworkReply .

1.常见的APL

QNetworkAccessManager 提供了HTTP的核⼼操作

在这里插入图片描述

QNetworkRequest 表⽰⼀个HTTP请求(不含body)

如果需要发送⼀个带有body的请求(⽐如post),会在 QNetworkAccessManager 的post⽅法中通过单独的参数来传⼊body.

在这里插入图片描述

其中的 QNetworkRequest::KnownHeaders 是⼀个枚举类型,常⽤取值:

在这里插入图片描述

QNetworkReply 表⽰⼀个HTTP响应.这个类同时也是 QIODevice 的⼦类

在这里插入图片描述

此外, QNetworkReply还有⼀个重要的信号 finished 会在客⼾端收到完整的响应数据之后触发.

2.给服务器发送⼀个GET请求.

在这里插入图片描述

此处建议使⽤ QPlainTextEdit ⽽不是 QTextEdit .主要因为 QTextEdit 要进⾏富⽂本解析,如果得到的HTTP响应体积很⼤,就会导致界⾯渲染缓慢甚⾄被卡住.

在这里插入图片描述

在这里插入图片描述

发送POST请求代码也是类似.使⽤ manager->post() 即可.此处不再演⽰。

四.音视频

在Qt中,⾳频主要是通过QSound类来实现。但是需要注意的是QSound类只⽀持播放wav格式的⾳频⽂件。也就是说如果想要添加⾳频效果,那么⾸先需要将⾮wav格式的⾳频⽂件转换为wav格式。

在这里插入图片描述

注意:使⽤QSound类时,需要添加模块:multimedia

在这里插入图片描述

实际上播放音频很简单,需要把音频先转成qrc文件,再使用Play函数进行播放即可。

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/551313.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用两台主机实现博客的搭建

1.运行环境 这里的主机IP是自己虚拟器的IP。 主机主机名系统服务192.168.179.128Server-WebLinuxWeb192.168.179.129Server-NFSDNSLinuxNFS/DNS 2.基础配置 1.配置主机名,静态IP地址 2.开启防火墙并配置 3.部分开启SElinux并配置 4.服务器之间使用同ntp.aliyun.com…

设计模式之状态模式(下)

3)共享状态 1.概述 在某些情况下,多个环境对象可能需要共享同一个状态,如果希望在系统中实现多个环境对象共享一个或多个状态对象,那么需要将这些状态对象定义为环境类的静态成员对象。 2.案例 背景:要求两个开关对…

本地做好准备上传到Git分支,发现git上已经更新了,上传到dev分支

git add . git commit -m 备注 git pull --rebase origin dev 拉取dev上的代码合并到本地 git push -u origin dev推到远程dev上(注意着可能不是最后一步,先看完) 如果报错,意思是本地没有dev分支,没办法上传到git上…

获取钉钉群的 chatId

1、地址 获取地址 在代码发钉钉的地方找到 corpId。 填上后,会出现一个二维码,使用钉钉扫描二维码,就会出现你所在的群,点击,就能获取到 chatId

数据结构——单链表(C语言版)

文章目录 一、链表的概念及结构二、单链表的实现SList.h链表的打印申请新的结点链表的尾插链表的头插链表的尾删链表的头删链表的查找在指定位置之前插入数据在指定位置之后插入数据删除pos结点删除pos之后的结点销毁链表 三、完整源代码SList.hSList.ctest.c 一、链表的概念及…

自定义鼠标软件 SteerMouse最新完整激活版

SteerMouse是一款实用的Mac OS X系统辅助工具,可以帮助用户自定义鼠标和触控板的设置,提高使用效率。它提供了多种功能,如自定义按钮、滚轮和光标速度,以及调整灵敏度等,使用户能够根据自己的需求和习惯进行优化。 Ste…

振弦式裂缝计安装指南:使用灌浆锚头安装法

振弦式表面裂缝计作为一种精密的测量设备,在土木工程、建筑结构监测等领域发挥着重要的作用。为了确保裂缝计能够准确、稳定地工作,其安装过程尤为重要。本文将详细介绍振弦式表面裂缝计灌浆锚头的安装步骤,帮助大家更好地完成安装工作。 步骤…

启明智显技术分享|HMI工业级芯片Model3(简称M3芯片)PSRAM使用指南及PSRAM溢出如何进行问题定位

Model3芯片简介: 启明智显发布的HMI工业级芯片Model3(简称M3芯片)是一款高性能的显示交互和智能控制 MCU,采用国产自主高算力 RISC-V 内核,内置片上 1MB 大容量 SRAM 以及 64Mb PSRAM,并提供丰富的互联外设…

李彦宏官宣第二届“文心杯”创业大赛,最高投资奖励翻5倍达5000万

4月16日,百度创始人、董事长兼首席执行官李彦宏在Create 2024百度AI开发者大会上宣布,第二届“文心杯”创业大赛正式启动,参赛选手有机会获得最高5000万人民币投资。 李彦宏在Create 2024百度AI开发者大会的演讲主题是“人人都是开发者”&…

伦敦站:电子科技大学2024年全球人才推介会诚邀学者报名参会!

2024年4月24日,电子科技大学访英代表团一行将在伦敦举办人才推介交流会。届时,电子科技大学嘉宾将现场推介学校办学和人才队伍建设情况,宣讲学校人才引进政策,并与参会学者进行互动交流与洽谈。现热忱欢迎伦敦及周边地区学者报名参…

怎么申请OV证书

不同于DV SSL证书申请只需要验证域名所有权,申请OV SSL证书除了会验证域名之外,同时还会对申请企业的组织信息进行验证。本篇就给大家介绍一下如何申请OV SSL证书。 目前DV SSL证书和OV SSL证书的区别还是比较大的,DV和OV的区别:…

红帽认证考试流程指导

参加红帽认证考试涉及以下三个流程帐号和证件的准备 考试信息的填写 证书关联与下载 帐号和证件的准备RHN 帐号注册 在参加红帽官方培训和认证考试前需要您提前注册好红帽帐号(RHN) 访问 此页面 ,随后点击 Register for a Red Hat account 链接进行注册 注册时以下条…

BoostCompass( 查找功能实现 )

阅读导航 一、查找功能基本思路二、详细代码三、代码介绍四、运行结果 一、查找功能基本思路 通过实现一个基于倒排索引的搜索引擎,来提供高效、准确的搜索服务。其核心在于快速准确地从大量文档中检索出与用户查询关键词相关的文档,并按照相关性对结果…

【计算机考研】「软件工程」VS「电子信息」专硕有什么不同?

就今年的24国考来说,计算机技术(085404)能报的只是比计算机科学与技术少那么一点点(因为“计算机类”它都可以报,只有写计算机科学与技术的报不了)相对于其他天坑专业来说还是好很多的! 本人双…

制造企业研发设计资源用共享云桌面集中管控有哪些优势?

在制造企业上云的过程中,因为它们多用3D设计软件,所以选择一款高效、稳定、安全的云桌面产品显得尤为重要。云飞云共享云桌面作为一种新型的云桌面产品,正逐渐受到越来越多制造企业的青睐。那么,制造企业为什么要选云飞云共享云桌…

PaddleOCR训练自己模型(2)----参数配置及训练

一、介绍 paddleocr分为文字定位(Det)和文字识别(Rec)两个部分 二、定位模型训练 (1)Det预训练模型下载:https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_train.tar (2)下载完之后,…

(十一)C++自制植物大战僵尸游戏客户端更新实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/cFP3z 更新检查 游戏启动后会下载服务器中的版本号然后与本地版本号进行对比,如果本地版本号小于服务器版本号就会弹出更新提示。让用户选择是否更新客户端。 在弹出的更新对话框中有显示最新版本更新的内容…

React-hooks:useRef

useRef文档 useRef 是一个ReactHook,它能帮助引用一个不需要渲染的值。 const ref useRef(initialValue)参数 initialValue:ref对象的 current 属性的初始值,可以是任意类型的值,这个参数在首次渲染后被忽略。 返回值 useRe…

Day99:云上攻防-云原生篇K8s安全实战场景攻击Pod污点Taint横向移动容器逃逸

目录 云原生-K8s安全-横向移动-污点Taint 云原生-K8s安全-Kubernetes实战场景 知识点: 1、云原生-K8s安全-横向移动-污点Taint 2、云原生-K8s安全-Kubernetes实战场景 云原生-K8s安全-横向移动-污点Taint 如何判断实战中能否利用污点Taint? 设置污点…

Java中的装箱和拆箱

本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。 目录: 装箱和拆箱概念 装箱和拆箱是如何实现的 面试中相关的问题 装箱和拆箱概念 Java为每种基本数据类型都提供了对应的包装器类型,至于为…
最新文章