网络编程
- 一.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 ,完成处理请求的过程
- 读取请求并解析
- 根据请求计算响应
- 把响应写回到客⼾端
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函数进行播放即可。