Проверка доступности сети
Разработчику приложений для ОС Аврора доступны несколько способов проверить сетевое соединение, используя методы API Qt Network. При этом для приложения должно быть указано разрешение Internet в desktop-файле.
Метод
QNetworkConfigurationManager::isOnline()
в ОС Аврора до версии 4.0.2 включительно проверяет доступность адреса ipv4.omprussia.ru.
Начиная с версии 4.1.0 администратор мобильного устройства может настроить адрес, используемый для проверки.
Метод возвращает true, если указанный адрес доступен с мобильного устройства,
в противном случае возвращает false.
Пример использования:
QNetworkConfigurationManager mgr;
QList<QNetworkConfiguration> activeConfigs = mgr.allConfigurations(QNetworkConfiguration::Active);
if (activeConfigs.count() > 0)
Q_ASSERT(mgr.isOnline());
else
Q_ASSERT(!mgr.isOnline());
Метод
void QNetworkAccessManager::connectToHost(const QString &hostName, quint16 port = 80)
инициирует соединение с хостом, заданным именем hostName
и портом port
.
Данный метод полезен для установки соединения по протоколу TCP с хостом до того, как будет выполнен
HTTP-запрос, с целью уменьшения задержки сети.
Метод не имеет возможности сообщать об ошибках.
Пример использования:
QNetworkAccessManager *manager = new QNetworkAccessManager();
manager->connectToHost("https://auroraos.ru");
Метод
int QHostInfo::lookupHost(const QString &name, QObject *receiver, const char *member)
определяет IP-адреса, связанные с именем хоста name
, и возвращает идентификатор ID
для поиска.
При завершении поиска слот или сигнал member
объекта receiver
вызывается с аргументом типа QHostInfo
,
который можно использовать для получения результата поиска.
Поиск выполняется одним вызовом функции, например:
QHostInfo::lookupHost("www.auroraos.ru", this, SLOT(lookedUp(QHostInfo)));
Примечание. Если устройство подключено к Аврора Центр, рекомендуется использовать адрес его сервера для проверки подключения.
Пример слота выводит основную информацию о возвращаемых адресах или сообщает об ошибке, если поиск не удался:
void MyClass::lookedUp(const QHostInfo &host)
{
if (host.error() != QHostInfo::NoError) {
qDebug() << "Lookup failed:" << host.errorString();
return;
}
foreach (const QHostAddress &address, host.addresses())
qDebug() << "Found address:" << address.toString();
}
В качестве значения параметра name
можно передать IP-адрес.
В этом случае метод QHostInfo
будет искать доменное имя для IP
(т.е. QHostInfo
выполнит обратный поиск).
В случае успеха результирующий QHostInfo
будет содержать как разрешённое доменное имя,
так и IP-адреса для имени хоста.
Примеры:
// Поиск IP-адреса по URL
QHostInfo::lookupHost("www.auroraos.ru", this, SLOT(lookedUp(QHostInfo)));
// Поиск имени хоста по IP-адресу
QHostInfo::lookupHost("185.129.100.112", this, SLOT(lookedUp(QHostInfo)));
В случае запуска нескольких запросов с помощью lookupHost()
порядок отправки сигналов может быть произвольным.