QNetworkConfiguration with wrong bearer type



  • I've a problem when Qt returns a wrong QNetworkConfiguration for a specific bearer type.
    Trying to resolve the QHostAddress e.g. for ethernet interface returns (sometimes!) the address of WiFi adapter.

    Here is a code example:

    // ----------------------------------------------------------------------------
    // getHostAddress (static)
    // ----------------------------------------------------------------------------
    QHostAddress NetworkTools::getHostAddress(const QNetworkConfiguration::BearerType &in_bearer_type)
    {
        if (in_bearer_type == QNetworkConfiguration::BearerUnknown) return QHostAddress();
    
        QNetworkConfigurationManager nwc_manager;
        QList<QNetworkConfiguration> nwc_list = nwc_manager.allConfigurations(QNetworkConfiguration::Active);
        if (nwc_list.isEmpty()) return QHostAddress();
    
        bool found = false;
        QNetworkConfiguration nwc;
        foreach (nwc, nwc_list)
        {
            if (nwc.bearerType() == in_bearer_type)
            {
                found = true; break;
            }
        }
        if (found == false) return QHostAddress();
    
        qDebug() << "NetworkTools::getHostAddress - found bearer type:" << nwc.bearerTypeName();
    
        QNetworkSession nws(nwc);
        if (nws.state() == QNetworkSession::Invalid || 
            nws.state() == QNetworkSession::NotAvailable) return QHostAddress();
    
        qDebug() << "NetworkTools::getHostAddress - session state:" << nws.state();
    
        QNetworkInterface nwi = nws.interface();
        if (nwi.isValid() == false) return QHostAddress();
        if (nwi.addressEntries().isEmpty()) return QHostAddress();
    
        foreach(QNetworkAddressEntry temp, nwi.addressEntries())
            qDebug() << "NetworkTools::getHostAddress - session addr entry:" << temp.ip().toString();
    
        QNetworkAddressEntry nwae = nwi.addressEntries().first();
        QHostAddress host_address = nwae.ip();
        return host_address;
    }
    

    BTW: I'm using Qt 5.5.1 / MSVC2013-32bit compiler under Windows 7.



  • just a push ...


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.