Класс QHostInfo
Класс QHostInfo предоставляет статические функции для поиска по имени хоста. Подробнее...
| Заголовок: | #include <QHostInfo> |
| qmake: | QT += network |
Примечание: Все функции в этом классе являются повторно входящими.
Типы
| перечисление | HostInfoError { NoError, HostNotFound, UnknownError } |
Открытые функции
| QHostInfo(int id = -1) | |
| QHostInfo(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) |
| QHostInfo & | operator=(const QHostInfo &other) |
| QHostInfo & | operator=(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, const QObject *receiver, PointerToMemberFunction function) |
| int | lookupHost(const QString &name, Functor functor) |
| int | lookupHost(const QString &name, const QObject *context, Functor functor) |
Подробное описание
Класс 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. Используйте addresses(), чтобы получить список IP-адресов хоста, и 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().
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] int QHostInfo::lookupHost(const QString &name, const QObject *receiver, PointerToMemberFunction function)
Это перегруженная функция.
Ищет IP-адрес(ы), связанные с именем узла name, и возвращает идентификатор для поиска. Когда результат поиска готов, слот или сигнал function в receiver вызывается с аргументом QHostInfo. Объект QHostInfo затем может быть проверен для получения результатов поиска.
Примечание: Нет гарантии порядка отправки сигналов, если вы запускаете несколько запросов с помощью lookupHost().
Эта функция была добавлена в Qt 5.9.
См. также abortHostLookup(), addresses(), error(), и fromName().
[static] int QHostInfo::lookupHost(const QString &name, Functor functor)
Это перегруженная функция.
Ищет IP-адрес(ы), связанные с именем узла name, и возвращает идентификатор для поиска. Когда результат поиска готов, functor вызывается с аргументом QHostInfo. Объект QHostInfo затем может быть проверен для получения результатов поиска.
Примечание: Нет гарантии порядка отправки сигналов, если вы запускаете несколько запросов с помощью lookupHost().
Эта функция была добавлена в Qt 5.9.
См. также abortHostLookup(), addresses(), error(), и fromName().
[static] int QHostInfo::lookupHost(const QString &name, const QObject *context, Functor functor)
Это перегруженная функция.
Ищет IP-адрес(ы), связанные с именем узла name, и возвращает идентификатор для поиска. Когда результат поиска готов, functor вызывается с аргументом QHostInfo. Объект QHostInfo затем может быть проверен для получения результатов поиска.
Если context уничтожается до завершения поиска, functor не будет вызван. Functor будет выполнен в потоке context. Поток context должен иметь работающий цикл событий Qt.
Примечание: Нет гарантии порядка отправки сигналов, если вы запускаете несколько запросов с помощью 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().
void QHostInfo::swap(QHostInfo &other)
Меняет местами сведения об узле other с данными текущего узла. Эта операция очень быстрая и никогда не терпит неудачу.
Эта функция была добавлена в Qt 5.10.
QHostInfo &QHostInfo::operator=(const QHostInfo &other)
Присваивает данные объекта other данному объекту сведений об узле и возвращает ссылку на него.
QHostInfo &QHostInfo::operator=(QHostInfo &&other)
Перемещающее присваивание other экземпляру QHostInfo.
Примечание: Объект other, из которого выполнено перемещение, находится в частично сформированном состоянии, в котором единственные допустимые операции — уничтожение и присвоение нового значения.
Эта функция была добавлена в Qt 5.10.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qhostinfo.html