您的位置:首页 > 理论基础 > 计算机网络

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

2017-02-28 14:14 387 查看
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.csdn.net/z_jinye/article/details/38908285
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: