简述
在网络操作中,经常会由于各种原因引起网络连接超时,究竟何为网络连接超时?
网络连接超时:在程序默认的等待时间内没有得到服务器的响应
超时原因
引起网络连接超时的原因很多,下面,列举一些常见的原因:
- 网络断开,不过经常显示无法连接
- 网络阻塞,导致你不能在程序默认等待时间内得到回复数据包
- 网络不稳定,网络无法完整传送服务器信息
- 系统问题,系统资源过低,无法为程序提供足够的资源处理服务器信息
- 设备不稳定,如网线松动、接口没插好等等
- 网络注册时系统繁忙,无法回应
- 网速过慢,如 使用 BT 多线程下载,在线收看视频等大量占用带宽的软件 ,若使用共享带宽还要防范他人恶意占用带宽
- 计算机感染了恶意软件,计算机病毒,计算机木马等
Qt 中的网络连接超时
在 Qt 中,关于 QNetworkAccessManager、QNetworkRequest 和 QNetworkReply 的文档中,找到了有关超时相关的错误 QNetworkReply::NetworkError。
常量 QNetworkReply::TimeoutError:
the connection to the remote server timed out
瞬间欣喜若狂,既然有超时错误,必然有设置超时的接口吧!遗憾,遗憾,遗憾。。。重要的事情说 3 遍,翻遍了官方文档,能和超时扯上关系的就这么一个简单的常量说明(当然还有 QNetworkReply::ProxyTimeoutError)。
这种情况下,我们只能自己去处理超时了。
如何处理超时
解决思路:
- 使用 QTimer 启动一个单次定时器,并设置超时时间。
- 在事件循环退出之后,判断定时器的状态,如果是激活状态,证明请求已经完成;否则,说明超时。
来看一个简单的例子 - 获取 Qt 官网 网页内容: