Qt实现探测当前有没有网络连接(Wi-Fi)——QNetworkConfigurationManager.isOnline()

本文介绍了两种检测网络状态的方法:一是使用QNetworkConfigurationManager类判断设备是否已连接到Wi-Fi;二是通过QHostInfo::lookupHost方法检测网络是否通畅及有数据交换。这两种方法适用于需要监控网络状态的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、只需要探测当前有没有连上Wi-Fi(不用获取网络状态),可以调用<QNetworkConfigurationManager>类。

    QNetworkConfigurationManager mgr;
    if(!mgr.isOnline())
    {
        qDebug()<<"请先连接Wi-Fi";
    }
    else
    {
        qDebug()<<"当前已连接上Wi-Fi";
    }

2、需要探测当前网络有没有数据来往,可以采用以下方法:

1:先声明一个槽:

void lookedUp(const QHostInfo &);

2:在.cpp文件里实现这个槽函数。

void MainWindow::lookedUp(const QHostInfo &host)
{
    if(host.error() != QHostInfo::NoError)
    {
        qDebug() << "当前无网!";
        errTime++;
    }
    else
    {
        qDebug() << host.addresses().first().toString();
        ui->status->setText("已联网!");
        netStatus = true;
    }
    if(errTime > 20)
    {
        ui->status->setText("拨号失败!");
        ui->pushButton_2->setEnabled(true);
    }
}

3:若要检测有没有数据,则如下调用即可。

QHostInfo::lookupHost("www.baidu.com", this, SLOT(lookedUp(QHostInfo)));

该方法的原理是通过lookUpHost()函数,ping通www.baidu.com,并返回其IP地址,如果返回了,即网络有效,如果ping了多次,还是没有任何返回,那就认为当前网络没有数据。

注:QNetworkConfigurationManager.isOnline()方法还暂不能监测指定某一路的在线情况。

转自:http://blog.youkuaiyun.com/z_jinye/article/details/38908285

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值