Как открыть QNetworkSession для точки доступа WiFi, определяющей, какой физический интерфейс использовать? - PullRequest
0 голосов
/ 21 мая 2019

Мой компьютер имеет 2 интерфейса WLAN: один встроенный («Wi-Fi») и внешний адаптер («Wi-Fi 2»). Как я могу заставить мое приложение Qt устанавливать соединение с данной точкой доступа (AP) через второй интерфейс?

Я хочу убедиться, что первый интерфейс всегда используется для подключения к Интернету (мой маршрутизатор ISP), а второй интерфейс используется для подключения к стороннему устройству (которое представляет собой точку доступа Wi-Fi). .

Следующий код подключается к точке доступа (SSID = DeviceRouter). Но я не знаю, как принудительно использовать мой вторичный интерфейс (Wi-Fi 2).

// My target SSID and interface (let's assume this is an open AP)
QString ssid = "DeviceRouter";
QString interface = "Wi-Fi 2";  // I want to use my secondary interface

// Get all configurations
QNetworkConfigurationManager mgr;
mgr.updateConfigurations();
waitForSignal( &mgr, SIGNAL( updateCompleted() ), 20000 ); // implemented elsewhere
QList<QNetworkConfiguration> allConfigs = mgr.allConfigurations();

// Select the configuration matching my target SSID
bool connected = false;
foreach( QNetworkConfiguration config, allConfigs ) {
    if( config.name() == ssid && config.bearerType == QNetworkConfiguration::BearerWLAN ) {
        QNetworkSession s( config );
        // How can I set the interface for the session?
        s.open();
        connected = w.waitForOpened( 30000 );
        if( connected ) {
            qDebug() << "You're connected on interface: " << s.interface().humanReadableName();
        }
        break;
    }
}

Итак, вывод всегда You're connected on interface: Wi-Fi 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...