一、前言
这篇文章将接着上述内容继续向下陈述,前文提到网络编程这块内容将拆分为四个内容,分别是主机信息查询、TCP通信、UDP通信和基于HTTP的网络应用程序。前篇文章已经讲述了第三个内容——《UDP通信》,接下来将继续讲述最后一个内容——《基于HTTP的网络应用程序》。
对于前文的《UDP通信》的内容,可自行查看文章:C++/Qt 网络(续三)-优快云博客和C++/Qt 网络(续四)-优快云博客
二、基于HTTP的网络应用程序
Qt的网络模块提供一些类来实现OSI七层网络模型中高层的网络协议,如HTTP、FTP、SNMP等,这些类主要是QNetworkRequest、QNetworkAccessManger和QNetworkReply。
QNetworkRequest类通过URL发起网络协议请求,其也保存网络请求的信息,目前支持HTTP、FTP和本地文件URL的下载或上传。
QNetworkAccessManger类用于协调网络操作,在QNetworkRequest发起网络请求后,QNetworkAccessManger负责发送网络请求,以及创建网络响应。
QNetworkReply类表示网络请求的响应,由QNetworkAccessManger在发送网络请求后创建网络响应。QNetworkReply提供的信号finished()、readyRead()、downloadProgress()可用于监测网络响应的执行情况,从而进行相应的操作。QNetworkReply是QIODevice的子类,所以QNetworkReply支持流数据读写功能,也支持异步或同步工作模式。
基于上述3个类,本章设计一个基于HTTP的网络文件下载程序。
1、示例程序的功能
在URL编辑框里输入一个网络文件URL,设置下载文件保存路径后,点击“下载”按钮就可以下载文件到设置的目录下。进度条可以显示文