C++ QT 实时进行网络监测

简介: C++ QT 实时进行网络监测

一、说明

向百度发送请求,判断是否连接网络,使用定时器,每五秒检测一次,由于会影响主界面,将其添加进子线程

二、代码

代码如下(示例):

//NetworkTester.h
#pragma once
#include <QtCore>
#include <QtNetwork>
class NetworkTester : public QObject
{
  Q_OBJECT
public:
  NetworkTester(QObject *parent = nullptr) : QObject(parent) { testNetworkStatus(); }
public slots:
  void testNetworkStatus()
  {
  QNetworkAccessManager *manager = new QNetworkAccessManager(this);
  QNetworkRequest request(QUrl("http://www.baidu.com/"));
  QNetworkReply *reply = manager->get(request);
  QObject::connect(reply, &QNetworkReply::finished, [this, reply, manager]() {
    bool status = false;
    if (reply->error() == QNetworkReply::NoError) {
    status = true;
    }
    emit networkStatusChanged(status);
    reply->deleteLater();
    manager->deleteLater();
  });
  }
signals:
  void networkStatusChanged(bool status);
};
//NetWorkCheck.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_NetWorkCheck.h"
#include "NetworkTester.h"
#include <QDebug>
#include <QTimer>
class NetWorkCheck : public QMainWindow
{
    Q_OBJECT
public:
    NetWorkCheck(QWidget *parent = nullptr);
    ~NetWorkCheck();
private:
    Ui::NetWorkCheckClass ui;
  NetworkTester *tester;
  QTimer *timer;
};
//NetWorkCheck.cpp
#include "NetWorkCheck.h"
NetWorkCheck::NetWorkCheck(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
  tester = new NetworkTester(this);
  QThread *thread = new QThread;
  tester->moveToThread(thread);
  thread->start();
  timer = new QTimer(this);
  QObject::connect(timer, &QTimer::timeout, tester, &NetworkTester::testNetworkStatus);
  QObject::connect(tester, &NetworkTester::networkStatusChanged, [](bool status) {
    if (status) {
    qDebug() << "Network is available.";
    }
    else {
    qDebug() << "Network is not available.";
    }
  });
  timer->start(5000);
}
NetWorkCheck::~NetWorkCheck()
{}
//main.cpp
#include "NetWorkCheck.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    NetWorkCheck w;
    w.show();
    return a.exec();
}

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:

零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)

https://xxetb.xet.tech/s/VsFMs


相关文章
|
NoSQL 网络协议 Linux
Redis的实现一:c、c++的网络通信编程技术,先实现server和client的通信
本文介绍了使用C/C++进行网络通信编程的基础知识,包括创建socket、设置套接字选项、绑定地址、监听连接以及循环接受和处理客户端请求的基本步骤。
226 6
|
4月前
|
监控 Linux 测试技术
C++零拷贝网络编程实战:从理论到生产环境的性能优化之路
🌟 蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕C++与零拷贝网络编程,从sendfile到DPDK,实战优化服务器性能,毫秒级响应、CPU降60%。分享架构思维,共探代码星辰大海!
|
11月前
|
运维 监控 算法
解读 C++ 助力的局域网监控电脑网络连接算法
本文探讨了使用C++语言实现局域网监控电脑中网络连接监控的算法。通过将局域网的拓扑结构建模为图(Graph)数据结构,每台电脑作为顶点,网络连接作为边,可高效管理与监控动态变化的网络连接。文章展示了基于深度优先搜索(DFS)的连通性检测算法,用于判断两节点间是否存在路径,助力故障排查与流量优化。C++的高效性能结合图算法,为保障网络秩序与信息安全提供了坚实基础,未来可进一步优化以应对无线网络等新挑战。
|
6月前
|
机器学习/深度学习 传感器 运维
【电机轴承监测】基于matlab声神经网络电机轴承监测研究(Matlab代码实现)
【电机轴承监测】基于matlab声神经网络电机轴承监测研究(Matlab代码实现)
153 4
|
8月前
|
运维 监控 Linux
网络延迟监测工具选择(第一篇)
**WGCLOUD**是一款开源免费的跨平台运维监控工具,支持Windows、Linux、MacOS等系统,具备网络延迟监测功能。其内置的**PING监测**模块可实时ping目标IP,图形化展示延迟趋势,并在目标IP不可达时发送告警通知。支持分组管理,操作简单便捷,适合运维人员高效监控网络状态。
|
10月前
|
人工智能 运维 监控
阿里云携手神州灵云打造云内网络性能监测标杆 斩获中国信通院高质量数字化转型十大案例——金保信“云内网络可观测”方案树立云原生运维新范式
2025年,金保信社保卡有限公司联合阿里云与神州灵云申报的《云内网络性能可观测解决方案》入选高质量数字化转型典型案例。该方案基于阿里云飞天企业版,融合云原生引流技术和流量“染色”专利,解决云内运维难题,实现主动预警和精准观测,将故障排查时间从数小时缩短至15分钟,助力企业降本增效,形成可跨行业复制的数字化转型方法论。
545 6
|
10月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
641 14
|
存储 安全 物联网
浅析Kismet:无线网络监测与分析工具
Kismet是一款开源的无线网络监测和入侵检测系统(IDS),支持Wi-Fi、Bluetooth、ZigBee等协议,具备被动监听、实时数据分析、地理定位等功能。广泛应用于安全审计、网络优化和频谱管理。本文介绍其安装配置、基本操作及高级应用技巧,帮助用户掌握这一强大的无线网络安全工具。
1334 9
浅析Kismet:无线网络监测与分析工具
|
Linux iOS开发 网络架构
如何使用 Ping 命令监测网络丢包情况?
如何使用 Ping 命令监测网络丢包情况?
13292 48
WK
|
开发框架 开发工具 C++
C++跨平台框架Qt
Qt是一个功能强大的C++跨平台应用程序开发框架,支持Windows、macOS、Linux、Android和iOS等操作系统。它提供了250多个C++类,涵盖GUI设计、数据库操作、网络编程等功能。Qt的核心特点是跨平台性、丰富的类库、信号与槽机制,以及良好的文档和社区支持。Qt Creator是其官方IDE,提供了一整套开发工具,方便创建、编译、调试和运行应用程序。Qt适用于桌面、嵌入式和移动应用开发。
WK
666 5

推荐镜像

更多
  • qt