1
我试图在OS X Yosemite 10.10.3上用Qt 5.4检查互联网连接状态,但每次运行代码时都会连接结果,尽管我没有连接任何东西。如何使用Qt 5.4在OS X Yosemite 10.10.3上检测Internet连接状态?
bool NetworkAccessManager::currentConnectivityStatus()
{
QNetworkAccessManager *namanager = new QNetworkAccessManager(this);
switch (namanager->networkAccessible()) {
case QNetworkAccessManager::UnknownAccessibility:
kdebug() << Q_FUNC_INFO << "QNetworkAccessManager::UnknownAccessibility";
break;
case QNetworkAccessManager::NotAccessible:
kdebug() << Q_FUNC_INFO << "QNetworkAccessManager::NotAccessible";
break;
case QNetworkAccessManager::Accessible:
kdebug() << Q_FUNC_INFO << "QNetworkAccessManager::Accessible";
break;
default:
break;
}
QNetworkConfigurationManager manager;
kdebug()<< Q_FUNC_INFO << " network connection " << manager.isOnline();
QNetworkConfiguration cfg = manager.defaultConfiguration();
QNetworkSession *session = new QNetworkSession(cfg);
session->open();
session->waitForOpened();
if(session->isOpen())
{
switch (session->state()) {
case QNetworkSession::Connected:
kdebug() << Q_FUNC_INFO << "QNetworkSession::Connected";
break;
case QNetworkSession::Disconnected:
kdebug() << Q_FUNC_INFO << "QNetworkSession::disconnect";
break;
default:
break;
}
}
}
这里是所有上述的结果,当我断开一切
DEBUG 2015-04-25T16:00:59.560 bool NetworkAccessManager::currentConnectivityStatus() QNetworkAccessManager::Accessible
DEBUG 2015-04-25T16:00:59.560 bool NetworkAccessManager::currentConnectivityStatus() network connection OK true
DEBUG 2015-04-25T16:00:59.560 bool NetworkAccessManager::currentConnectivityStatus() QNetworkSession::Connected
您应该尝试ping外部服务器。 –
我检测到从NetworkReply到我请求的连接状态,但我正在寻找另一种方法来检测它,而不执行NetworkRequest –