Класс QHostInfo
Класс QHostInfo предоставляет статические функции для поиска имен хостов. Подробнее...
| Заголовок: | #include <QHostInfo> |
| CMake: | find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
Примечание: Все функции этого класса являются реентерабельными.
Типы публичного доступа
| Перечисление | HostInfoError { НетОшибки, ХостНеНайден, НеизвестнаяОшибка } |
Функции публичного доступа
| QHostInfo(QHostInfo &&other) | |
| QHostInfo(const QHostInfo &other) | |
| QHostInfo(int id = -1) | |
| QHostInfo & | operator=(QHostInfo &&other) |
| QHostInfo & | operator=(const QHostInfo &other) |
| ~QHostInfo() | |
| QList<QHostAddress> | addresses() const |
| QHostInfo::HostInfoError | error() const |
| QString | errorString() const |
| QString | hostName() const |
| int | lookupId() const |
| void | setAddresses(const QList<QHostAddress> &addresses) |
| void | setError(QHostInfo::HostInfoError error) |
| void | setErrorString(const QString &str) |
| void | setHostName(const QString &hostName) |
| void | setLookupId(int id) |
| void | swap(QHostInfo &other) |
Статические члены публичного доступа
| void | abortHostLookup(int id) |
| QHostInfo | fromName(const QString &name) |
| QString | localDomainName() |
| QString | localHostName() |
| int | lookupHost(const QString &name, QObject *receiver, const char *member) |
| int | lookupHost(const QString &name, Functor functor) |
| int | lookupHost(const QString &name, const QObject *context, Functor functor) |
Подробное описание
QHostInfo находит IP-адрес(ы), соответствующие имени хоста, или имя хоста, соответствующее IP-адресу. Класс предоставляет две статические вспомогательные функции: одна работает асинхронно и отправляет сигнал, как только хост будет найден, а другая блокирует выполнение и возвращает объект QHostInfo.
Чтобы асинхронно найти IP-адреса хоста, вызовите lookupHost(), которая принимает имя хоста или IP-адрес, объект получателя и сигнатуру слота в качестве аргументов и возвращает идентификатор. Вы можете прервать поиск, вызвав abortHostLookup() с идентификатором поиска.
Пример:
// To find the IP address of qt-project.org
QHostInfo::lookupHost("qt-project.org",
this, SLOT(printResults(QHostInfo)));
// To find the host name for 4.2.2.1
QHostInfo::lookupHost("4.2.2.1",
this, SLOT(printResults(QHostInfo))); Слот вызывается, когда результаты готовы. Результаты хранятся в объекте QHostInfo. Вызовите addresses(), чтобы получить список IP-адресов хоста, и hostName(), чтобы получить имя хоста, которое было найдено.
Если поиск не удался, error() возвращает тип ошибки, которая произошла. errorString() предоставляет удобочитаемое описание ошибки поиска.
Если вам нужен блокирующий поиск, используйте функцию QHostInfo::fromName():
QHostInfo info = QHostInfo::fromName("qt-project.org"); QHostInfo поддерживает имена международных доменных имён (IDN) через стандарты IDNA и Punycode.
Чтобы получить имя локального хоста, используйте статическую функцию QHostInfo::localHostName().
QHostInfo использует механизмы, предоставляемые операционной системой, для выполнения поиска. В соответствии с RFC 6724 нет гарантии, что будут возвращены все IP-адреса, зарегистрированные для домена или хоста.
Примечание: Начиная с Qt 4.6.1, QHostInfo использует несколько потоков для поиска DNS вместо одного выделенного потока DNS. Это улучшает производительность, но также меняет порядок отправки сигналов при использовании lookupHost() по сравнению с предыдущими версиями Qt.
Примечание: Начиная с Qt 4.6.3, QHostInfo использует небольшой внутренний кэш DNS на 60 секунд для повышения производительности.
См. также QAbstractSocket, RFC 3492 и RFC 6724.
Документация по типам членов
Перечисление QHostInfo::HostInfoError
Это перечисление описывает различные ошибки, которые могут возникнуть при попытке разрешить имя хоста.
| Константа | Значение | Описание |
|---|---|---|
QHostInfo::NoError |
0 |
Поиск выполнен успешно. |
QHostInfo::HostNotFound |
1 |
IP-адреса для хоста не найдены. |
QHostInfo::UnknownError |
2 |
Произошла неизвестная ошибка. |
См. также error() и setError().
Документация по функциям членов
[since 5.14] QHostInfo::QHostInfo(QHostInfo &&other)
Перемещающее создание нового QHostInfo из other.
Примечание: Перемещенный объект other находится в частично сформированном состоянии, в котором единственными допустимыми операциями являются уничтожение и присвоение нового значения.
Эта функция была введена в Qt 5.14.
QHostInfo::QHostInfo(const QHostInfo &other)
Создает копию other.
QHostInfo::QHostInfo(int id = -1)
Создает пустой объект host info с идентификатором поиска id.
См. также lookupId().
[since 5.10] QHostInfo &QHostInfo::operator=(QHostInfo &&other)
Перемещающее присвоение other данному экземпляру QHostInfo.
Примечание: Перемещенный объект other находится в частично сформированном состоянии, в котором единственными допустимыми операциями являются уничтожение и присвоение нового значения.
Эта функция была введена в Qt 5.10.
QHostInfo &QHostInfo::operator=(const QHostInfo &other)
Присваивает данные объекта other данному объекту host info и возвращает ссылку на него.
QHostInfo::~QHostInfo()
Уничтожает объект host info.
[static] void QHostInfo::abortHostLookup(int id)
Прерывает поиск хоста с идентификатором id, возвращённым функцией lookupHost().
См. также lookupHost() и lookupId().
QList<QHostAddress> QHostInfo::addresses() const
Возвращает список IP-адресов, связанных с hostName(). Этот список может быть пустым.
Пример:
QHostInfo info;
...
if (!info.addresses().isEmpty()) {
QHostAddress address = info.addresses().first();
// use the first IP address
} См. также setAddresses(), hostName() и error().
QHostInfo::HostInfoError QHostInfo::error() const
Возвращает тип ошибки, произошедшей при поиске имени хоста, в противном случае возвращает NoError.
См. также setError() и errorString().
QString QHostInfo::errorString() const
Если поиск завершился ошибкой, эта функция возвращает удобочитаемое описание ошибки; в противном случае возвращается «Неизвестная ошибка».
См. также setErrorString() и error().
[static] QHostInfo QHostInfo::fromName(const QString &name)
Ищет IP-адрес(ы) для данного имени хоста name. Функция блокируется во время поиска, что означает приостановку выполнения программы до готовности результатов поиска. Возвращает результат поиска в объекте QHostInfo.
Если вы передаёте литеральный IP-адрес в name вместо имени хоста, QHostInfo будет искать доменное имя для IP-адреса (т.е., QHostInfo выполнит обратный поиск). При успехе возвращённый QHostInfo будет содержать как разрешённое доменное имя, так и IP-адреса для имени хоста.
См. также lookupHost().
QString QHostInfo::hostName() const
Возвращает имя хоста, чьи IP-адреса были найдены.
См. также setHostName() и localHostName().
[static] QString QHostInfo::localDomainName()
Возвращает домен DNS этой машины.
Примечание: Домены DNS не связаны с доменными именами, встречающимися в сетях Windows.
См. также hostName().
[static] QString QHostInfo::localHostName()
Возвращает имя хоста этой машины, если оно настроено. Обратите внимание, что имена хостов не гарантированно уникальны в глобальном масштабе, особенно если они были настроены автоматически.
Эта функция не гарантирует, что возвращаемое имя хоста является полным доменным именем (FQDN). Для этого используйте fromName() для разрешения возвращённого имени в FQDN.
Эта функция возвращает то же, что и QSysInfo::machineHostName().
См. также hostName() и localDomainName().
[static] int QHostInfo::lookupHost(const QString &name, QObject *receiver, const char *member)
Ищет IP-адрес(ы), связанные с именем хоста name, и возвращает идентификатор поиска. Когда результат поиска готов, вызывается слот или сигнал member в receiver с аргументом QHostInfo. Объект QHostInfo можно затем проверить, чтобы получить результаты поиска.
Поиск выполняется одной функцией, например:
QHostInfo::lookupHost("www.kde.org",
this, SLOT(lookedUp(QHostInfo))); Реализация слота выводит базовую информацию об адресах, возвращённых поиском, или сообщает об ошибке, если поиск не удался:
void MyWidget::lookedUp(const QHostInfo &host)
{
if (host.error() != QHostInfo::NoError) {
qDebug() << "Lookup failed:" << host.errorString();
return;
}
const auto addresses = host.addresses();
for (const QHostAddress &address : addresses)
qDebug() << "Found address:" << address.toString();
} Если вы передаёте литеральный IP-адрес в name вместо имени хоста, QHostInfo будет искать доменное имя для IP-адреса (т.е., QHostInfo выполнит обратный поиск). При успехе полученный QHostInfo будет содержать как разрешённое доменное имя, так и IP-адреса для имени хоста. Пример:
QHostInfo::lookupHost("4.2.2.1",
this, SLOT(lookedUp(QHostInfo))); Примечание: Нет гарантии порядка выдачи сигналов, если вы запускаете несколько запросов с помощью lookupHost().
См. также abortHostLookup(), addresses(), error() и fromName().
[static, since 5.9] template <typename Functor> int QHostInfo::lookupHost(const QString &name, Functor functor)
Это перегруженная функция.
Ищет IP-адрес(ы), связанные с именем хоста name, и возвращает идентификатор поиска. Когда результат поиска готов, вызывается functor с аргументом QHostInfo. Объект QHostInfo можно затем проверить, чтобы получить результаты поиска.
Functor будет выполнен в потоке, который вызывает lookupHost; этот поток должен иметь работающий цикл событий Qt.
Примечание: Нет гарантии порядка выдачи сигналов, если вы запускаете несколько запросов с помощью lookupHost().
Эта функция была добавлена в Qt 5.9.
См. также abortHostLookup(), addresses(), error() и fromName().
[static, since 5.9] template <typename Functor> int QHostInfo::lookupHost(const QString &name, const QObject *context, Functor functor)
Это перегруженная функция.
Ищет IP-адрес(ы), связанные с именем хоста name, и возвращает идентификатор поиска. Когда результат поиска готов, вызывается functor с аргументом QHostInfo. Объект QHostInfo можно затем проверить, чтобы получить результаты поиска.
Если context уничтожается до завершения поиска, functor не будет вызван. Functor будет выполнен в потоке context. Поток context должен иметь работающий цикл событий Qt.
Вот альтернативная сигнатура функции:
lookupHost(const QString &name, const QObject *receiver, PointerToMemberFunction function)
В этом случае, когда результат поиска готов, слот или сигнал function в receiver вызывается с аргументом QHostInfo. Объект QHostInfo можно затем проверить, чтобы получить результаты поиска.
Примечание: Нет гарантии порядка выдачи сигналов, если вы запускаете несколько запросов с помощью lookupHost().
Эта функция была добавлена в Qt 5.9.
См. также abortHostLookup(), addresses(), error() и fromName().
int QHostInfo::lookupId() const
Возвращает идентификатор этого поиска.
См. также setLookupId(), abortHostLookup() и hostName().
void QHostInfo::setAddresses(const QList<QHostAddress> &addresses)
Устанавливает список адресов в этом QHostInfo на addresses.
См. также addresses().
void QHostInfo::setError(QHostInfo::HostInfoError error)
Устанавливает тип ошибки для этого QHostInfo на error.
См. также error() и errorString().
void QHostInfo::setErrorString(const QString &str)
Устанавливает удобочитаемое описание ошибки, произошедшей при поиске, на str, если поиск завершился ошибкой.
См. также errorString() и setError().
void QHostInfo::setHostName(const QString &hostName)
Устанавливает имя хоста для этого QHostInfo на hostName.
См. также hostName().
void QHostInfo::setLookupId(int id)
Устанавливает идентификатор этого поиска на id.
См. также lookupId() и lookupHost().
[since 5.10] void QHostInfo::swap(QHostInfo &other)
Меняет местами информацию о хосте other с текущей информацией о хосте. Эта операция очень быстрая и никогда не терпит неудачи.
Эта функция была добавлена в Qt 5.10.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qhostinfo.html