Spec-Zone.ru › Qt 5.6

Класс QHostInfo

Класс QHostInfo предоставляет статические функции для поиска имен хостов. Подробнее...

Заголовок: #include <QHostInfo>
qmake: QT += network
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются повторно-входными.

Типы публичного доступа

перечисление HostInfoError { NoError, HostNotFound, UnknownError }

Функции публичного доступа

QHostInfo(int id = -1)
QHostInfo(const QHostInfo &other)
~QHostInfo()
QList<QHostAddress> addresses() const
HostInfoError error() const
QString errorString() const
QString hostName() const
int lookupId() const
void setAddresses(const QList<QHostAddress> &addresses)
void setError(HostInfoError error)
void setErrorString(const QString &str)
void setHostName(const QString &hostName)
void setLookupId(int id)
QHostInfo & operator=(const 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)

Подробное описание

Класс QHostInfo предоставляет статические функции для поиска имен хостов.

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. Для получения списка IP-адресов хоста вызовите addresses(), а для получения имени хоста, который был найден – hostName().

Если поиск не удался, error() возвращает тип произошедшей ошибки. errorString() предоставляет удобочитаемое описание ошибки поиска.

Если вам нужен блокирующий поиск, используйте функцию QHostInfo::fromName():

QHostInfo info = QHostInfo::fromName("qt-project.org");

QHostInfo поддерживает международные доменные имена (IDN) через стандарты IDNA и Punycode.

Для получения имени локального хоста используйте статическую функцию QHostInfo::localHostName().

Примечание: Начиная с Qt 4.6.1, QHostInfo использует несколько потоков для поиска DNS вместо одного выделенного потока DNS. Это улучшает производительность, но также меняет порядок отправки сигналов при использовании lookupHost() по сравнению с предыдущими версиями Qt.

Примечание: Начиная с Qt 4.6.3, QHostInfo использует небольшой внутренний кэш DNS (60 секунд) для повышения производительности.

См. также QAbstractSocket и RFC 3492.

Документация типов членов

перечисление QHostInfo::HostInfoError

Это перечисление описывает различные ошибки, которые могут возникнуть при попытке разрешения имени хоста.

Постоянная Значение Описание
QHostInfo::NoError 0 Поиск был выполнен успешно.
QHostInfo::HostNotFound 1 IP-адреса для хоста не найдены.
QHostInfo::UnknownError 2 Произошла неизвестная ошибка.

См. также error() и setError().

Документация функций членов

QHostInfo::QHostInfo(int id = -1)

Создает пустой объект информации о хосте с идентификатором поиска id.

См. также lookupId().

QHostInfo::QHostInfo(const QHostInfo &other)

Создает копию other.

QHostInfo::~QHostInfo()

Удаляет объект информации о хосте.

[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().

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;
    }

    foreach (const QHostAddress &address, host.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().

int QHostInfo::lookupId() const

Возвращает идентификатор этого поиска.

См. также setLookupId(), abortHostLookup(), и hostName().

void QHostInfo::setAddresses(const QList<QHostAddress> &addresses)

Устанавливает список адресов в этом объекте QHostInfo на addresses.

См. также addresses().

void QHostInfo::setError(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().

QHostInfo &QHostInfo::operator=(const QHostInfo &other)

Присваивает данные объекта other этому объекту информации о хосте и возвращает ссылку на него.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qhostinfo.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API