2015-04-25 29 views
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 
+0

您应该尝试ping外部服务器。 –

+0

我检测到从NetworkReply到我请求的连接状态,但我正在寻找另一种方法来检测它,而不执行NetworkRequest –

回答

-1

Pinging from a C/C++ program这里是如何ping一个外部服务器,实现这一点,如果要乒然后返回true,如果没有,假。

相关问题