Auf dieser Seite

QHostInfo Class

Die Klasse „QHostInfo“ stellt statische Funktionen für die Suche nach Hostnamen bereit. Mehr...

Header: #include <QHostInfo>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Hinweis: Diese Funktionen sind zudem threadsicher:

Öffentliche Typen

enum HostInfoError { NoError, HostNotFound, UnknownError }

Öffentliche Funktionen

QHostInfo(int id = -1)
QHostInfo(const QHostInfo &other)
QHostInfo(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=(QHostInfo &&other)
QHostInfo &operator=(const QHostInfo &other)

Statische öffentliche Mitglieder

void abortHostLookup(int id)
(since 6.12) void clearCache()
QHostInfo fromName(const QString &name)
QString localDomainName()
QString localHostName()
int lookupHost(const QString &name, const QObject *receiver, const char *member)
int lookupHost(const QString &name, Functor &&functor)
int lookupHost(const QString &name, const QObject *context, Functor functor)

Ausführliche Beschreibung

QHostInfo ermittelt die mit einem Hostnamen verknüpften IP-Adressen oder den mit einer IP-Adresse verknüpften Hostnamen. Die Klasse stellt zwei statische Hilfsfunktionen bereit: eine, die asynchron arbeitet und ein Signal ausgibt, sobald der Host gefunden wurde, und eine, die blockiert und ein QHostInfo-Objekt zurückgibt.

Um die IP-Adressen eines Hosts asynchron abzufragen, rufen Sie ` lookupHost()` auf, das den Hostnamen oder die IP-Adresse, ein Empfängerobjekt und eine Slot-Signatur als Argumente entgegennimmt und eine ID zurückgibt. Sie können die Abfrage abbrechen, indem Sie ` abortHostLookup()` mit der Abfrage-ID aufrufen.

Beispiel:

// To find the IP address of qt-project.org
QHostInfo::lookupHost("qt-project.org", this, &MyWidget::printResults);

// To find the host name for 4.2.2.1
QHostInfo::lookupHost("4.2.2.1", this, &MyWidget::printResults);

Der Slot wird aufgerufen, sobald die Ergebnisse vorliegen. Die Ergebnisse werden in einem QHostInfo-Objekt gespeichert. Rufen Sie ` addresses()` auf, um die Liste der IP-Adressen für den Host abzurufen, und ` hostName()`, um den abgefragten Hostnamen zu erhalten.

Wenn die Abfrage fehlgeschlagen ist, gibt ` error()` die Art des aufgetretenen Fehlers zurück. ` errorString()` liefert eine für Menschen lesbare Beschreibung des Abfragefehlers.

Wenn Sie eine blockierende Abfrage wünschen, verwenden Sie die Funktion ` QHostInfo::fromName()`:

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

QHostInfo unterstützt internationalisierte Domänennamen (IDNs) gemäß den IDNA- und Punycode-Standards.

Um den Namen des lokalen Hosts abzurufen, verwenden Sie die statische Funktion ` QHostInfo::localHostName()`.

QHostInfo nutzt die vom Betriebssystem bereitgestellten Mechanismen, um die Abfrage durchzuführen. Gemäß RFC 6724 gibt es keine Garantie dafür, dass alle für eine Domäne oder einen Host registrierten IP-Adressen zurückgegeben werden.

Hinweis: Seit Qt 4.6.1 verwendet QHostInfo mehrere Threads für die DNS-Abfrage anstelle eines dedizierten DNS-Threads. Dies verbessert die Leistung, verändert jedoch im Vergleich zu früheren Qt-Versionen auch die Reihenfolge der Signalausgabe bei der Verwendung von ` lookupHost()`.

Hinweis: Seit Qt 4.6.3 verwendet `QHostInfo` zur Leistungssteigerung einen kleinen internen DNS-Cache mit einer Dauer von 60 Sekunden.

Siehe auch ` QAbstractSocket`, RFC 3492 und RFC 6724.

Dokumentation zu Mitgliedstypen

enum QHostInfo::HostInfoError

Diese Enumeration beschreibt die verschiedenen Fehler, die beim Auflösen eines Hostnamens auftreten können.

KonstanteWertBeschreibung
QHostInfo::NoError0Die Suche war erfolgreich.
QHostInfo::HostNotFound1Für den Host wurden keine IP-Adressen gefunden.
QHostInfo::UnknownError2Es ist ein unbekannter Fehler aufgetreten.

Siehe auch error() und setError().

Dokumentation der Mitgliedsfunktionen

[explicit] QHostInfo::QHostInfo(int id = -1)

Erstellt ein leeres Host-Info-Objekt mit der Lookup-ID „ id “.

Siehe auch lookupId().

QHostInfo::QHostInfo(const QHostInfo &other)

Erstellt eine Kopie von „ other “.

[noexcept] QHostInfo::QHostInfo(QHostInfo &&other)

Erstellt per „Move“ ein neues `QHostInfo`-Objekt aus ` other`.

Hinweis: Das Objekt „ other “, aus dem die Zuweisung erfolgt, befindet sich in einem teilweise initialisierten Zustand, in dem die einzigen zulässigen Operationen die Zerstörung und die Zuweisung eines neuen Werts sind.

[noexcept] QHostInfo::~QHostInfo()

Löscht das Host-Info-Objekt.

[static] void QHostInfo::abortHostLookup(int id)

Bricht die Host-Suche mit der ID „ id “ ab, wie sie von der Funktion „ lookupHost()“ zurückgegeben wird.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch lookupHost() und lookupId().

QList<QHostAddress> QHostInfo::addresses() const

Gibt die Liste der IP-Adressen zurück, die mit hostName() verknüpft sind. Diese Liste kann leer sein.

Beispiel:

QHostInfo info;
...
if (!info.addresses().isEmpty()) {
    QHostAddress address = info.addresses().first();
    // use the first IP address
}

Siehe auch setAddresses(), hostName() und error().

[static, since 6.12] void QHostInfo::clearCache()

Löscht den internen DNS-Cache, der von lookupHost() und fromName() verwendet wird.

Rufen Sie diese Funktion auf, wenn die zwischengespeicherten Host-Informationen möglicherweise veraltet sind und neue Abfragen erforderlich sind. Typische Anwendungsfälle sind:

  • Die Anwendung hat eine Änderung der Netzwerkkonfiguration erkannt (z. B. Wechsel zwischen WLAN und Ethernet oder Herstellen/Trennen einer VPN-Verbindung).
  • Es ist bekannt, dass sich die Adresse eines Servers geändert hat (z. B. bei dynamischem DNS oder Failover), und die Anwendung sollte den Hostnamen erneut auflösen. Beachten Sie, dass vorgelagerte DNS-Server und Resolver ihre eigenen TTL-Werte haben; das Leeren des Caches hier hat keine Auswirkungen auf sie, sodass die neue Abfrage möglicherweise weiterhin die vorherige Adresse zurückgibt, bis die vorgelagerte TTL abgelaufen ist.
  • Die Anwendung verwendet für Abfragen ein zwischengespeichertes Ergebnis, benötigt jedoch eine neue Abfrage, wenn der Cache abgelaufen oder nicht mehr gültig ist.

Diese Funktion löscht lediglich den Cache. Sie bricht keine laufenden Abfragen ab; diese werden abgeschlossen und ihre Ergebnisse werden weiterhin ausgeliefert. Verwenden Sie diese Funktion, wenn Sie möchten, dass zukünftige Abfragen erneut durchgeführt werden, ohne laufende Vorgänge zu beeinträchtigen.

Hinweis: Diese Funktion ist threadsicher.

Diese Funktion wurde in Qt 6.12 eingeführt.

Siehe auch lookupHost() und fromName().

QHostInfo::HostInfoError QHostInfo::error() const

Gibt den Typ des aufgetretenen Fehlers zurück, falls die Hostnamensauflösung fehlgeschlagen ist; andernfalls wird „ NoError “ zurückgegeben.

Siehe auch „ setError()“ und „ errorString()“.

QString QHostInfo::errorString() const

Wenn die Suche fehlgeschlagen ist, gibt diese Funktion eine für Menschen lesbare Fehlerbeschreibung zurück; andernfalls wird „Unbekannter Fehler“ zurückgegeben.

Siehe auch setErrorString() und error().

[static] QHostInfo QHostInfo::fromName(const QString &name)

Sucht die IP-Adresse(n) für den angegebenen Host name. Die Funktion wird während der Suche blockiert, was bedeutet, dass die Ausführung des Programms unterbrochen wird, bis die Suchergebnisse vorliegen. Gibt das Suchergebnis in einem QHostInfo -Objekt zurück.

Wenn Sie anstelle eines Hostnamens eine IP-Adresse als Literal an ` name ` übergeben, sucht ` QHostInfo ` nach dem Domänennamen für diese IP-Adresse (d. h., ` QHostInfo ` führt eine umgekehrte Suche durch). Bei Erfolg enthält das zurückgegebene ` QHostInfo ` sowohl den aufgelösten Domänennamen als auch die IP-Adressen für den Hostnamen.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch ` lookupHost()`.

QString QHostInfo::hostName() const

Gibt den Namen des Hosts zurück, dessen IP-Adressen abgefragt wurden.

Siehe auch setHostName() und localHostName().

[static] QString QHostInfo::localDomainName()

Gibt die DNS-Domäne dieses Computers zurück.

Hinweis: DNS-Domänen stehen in keinem Zusammenhang mit den in Windows-Netzwerken vorkommenden Domänennamen.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch ` hostName()`.

[static] QString QHostInfo::localHostName()

Gibt den Hostnamen dieses Rechners zurück, sofern einer konfiguriert ist. Beachten Sie, dass nicht garantiert werden kann, dass Hostnamen global eindeutig sind, insbesondere wenn sie automatisch konfiguriert wurden.

Diese Funktion garantiert nicht, dass der zurückgegebene Hostname ein vollqualifizierter Domänenname (FQDN) ist. Verwenden Sie hierfür die Funktion ` fromName()`, um den zurückgegebenen Namen in einen FQDN aufzulösen.

Diese Funktion liefert dasselbe Ergebnis wie ` QSysInfo::machineHostName()`.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch ` hostName()` und ` localDomainName()`.

[static] int QHostInfo::lookupHost(const QString &name, const QObject *receiver, const char *member)

Sucht die IP-Adresse(n) heraus, die dem Hostnamen name zugeordnet sind, und gibt eine ID für die Abfrage zurück. Sobald das Ergebnis der Abfrage vorliegt, wird der Slot oder das Signal member in receiver mit dem Argument QHostInfo aufgerufen. Das Objekt QHostInfo kann dann ausgewertet werden, um die Ergebnisse der Abfrage abzurufen.

Die Suche wird durch einen einzigen Funktionsaufruf durchgeführt, zum Beispiel:

QHostInfo::lookupHost("www.kde.org", this, &MyWidget::lookedUp);

Die Implementierung des Slots gibt grundlegende Informationen zu den bei der Suche zurückgegebenen Adressen aus oder meldet einen Fehler, falls die Suche fehlgeschlagen ist:

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

Wenn Sie anstelle eines Hostnamens eine IP-Adresse als Literal an „ name “ übergeben, sucht „ QHostInfo “ nach dem Domänennamen für diese IP-Adresse (d. h., „ QHostInfo “ führt eine Rückwärtssuche durch). Bei Erfolg enthält das Ergebnis „ QHostInfo “ sowohl den aufgelösten Domänennamen als auch die IP-Adressen für den Hostnamen. Beispiel:

QHostInfo::lookupHost("4.2.2.1", this, &MyWidget::lookedUp);

Hinweis: Es gibt keine Garantie für die Reihenfolge, in der die Signale gesendet werden, wenn Sie mehrere Anfragen mit `lookupHost()` starten.

Hinweis: In Qt-Versionen vor 6.7 nahm diese Funktion „ receiver “ als (nicht-konstantes) „ QObject* “ entgegen.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch abortHostLookup(), addresses(), error() und fromName().

[static] template <typename Functor> int QHostInfo::lookupHost(const QString &name, Functor &&functor)

Sucht die IP-Adresse(n) heraus, die dem Hostnamen name zugeordnet sind, und gibt eine ID für die Abfrage zurück. Sobald das Ergebnis der Abfrage vorliegt, wird die Funktion „ functor “ mit dem Argument „ QHostInfo “ aufgerufen. Das Objekt „ QHostInfo “ kann dann ausgewertet werden, um die Ergebnisse der Abfrage abzurufen.

Die Methode „ functor “ wird in dem Thread ausgeführt, der den Aufruf von „lookupHost“ ausführt; dieser Thread muss über eine laufende Qt-Ereignisschleife verfügen.

Hinweis: Es gibt keine Garantie für die Reihenfolge, in der die Signale ausgesendet werden, wenn Sie mehrere Anfragen mit `lookupHost()` starten.

Dies ist eine überladene Funktion.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch ` abortHostLookup()`, ` addresses()`, ` error()` und ` fromName()`.

[static] template <typename Functor> int QHostInfo::lookupHost(const QString &name, const QObject *context, Functor functor)

Sucht die IP-Adresse(n) heraus, die dem Hostnamen name zugeordnet sind, und gibt eine ID für die Abfrage zurück. Sobald das Ergebnis der Abfrage vorliegt, wird die Methode „ functor “ mit dem Argument „ QHostInfo “ aufgerufen. Das Objekt „ QHostInfo “ kann dann überprüft werden, um die Ergebnisse der Abfrage abzurufen.

Wird „ context “ zerstört, bevor die Suche abgeschlossen ist, wird „ functor “ nicht aufgerufen. „ functor “ wird im Thread von „ context “ ausgeführt. Der Thread des Kontexts muss über eine laufende Qt-Ereignisschleife verfügen.

Hier ist eine alternative Signatur für die Funktion:

lookupHost(const QString &name, const QObject *receiver, PointerToMemberFunction function)

In diesem Fall wird, sobald das Ergebnis der Suche vorliegt, der Slot oder das Signal „ function “ in „ receiver “ mit dem Argument „ QHostInfo “ aufgerufen. Das Objekt „ QHostInfo “ kann dann überprüft werden, um die Ergebnisse der Suche abzurufen.

Hinweis: Es gibt keine Garantie für die Reihenfolge, in der die Signale ausgegeben werden, wenn Sie mehrere Anfragen mit `lookupHost()` starten.

Dies ist eine überladene Funktion.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch „ abortHostLookup()“, „ addresses()“, „ error()“ und „ fromName()“.

int QHostInfo::lookupId() const

Gibt die ID dieses Lookups zurück.

Siehe auch „ setLookupId()“, „ abortHostLookup()“ und „ hostName()“.

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

Setzt die Liste der Adressen in dieser Datei „ QHostInfo “ auf „ addresses “.

Siehe auch addresses().

void QHostInfo::setError(QHostInfo::HostInfoError error)

Legt den Fehlertyp dieses QHostInfo auf error fest.

Siehe auch „ error()“ und „ errorString()“.

void QHostInfo::setErrorString(const QString &str)

Legt die für Menschen lesbare Beschreibung des aufgetretenen Fehlers in „ str “ fest, falls die Suche fehlgeschlagen ist.

Siehe auch errorString() und setError().

void QHostInfo::setHostName(const QString &hostName)

Legt den Hostnamen dieses QHostInfo auf hostName fest.

Siehe auch hostName().

void QHostInfo::setLookupId(int id)

Setzt die ID dieses Lookups auf „ id “.

Siehe auch „ lookupId()“ und „ lookupHost()“.

[noexcept] void QHostInfo::swap(QHostInfo &other)

Ersetzt diese Host-Informationen durch other. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

[noexcept] QHostInfo &QHostInfo::operator=(QHostInfo &&other)

Weist „ other “ dieser Instanz von „ QHostInfo “ zu.

Hinweis: Das Objekt, aus dem verschoben wurde ( other ), befindet sich in einem teilweise initialisierten Zustand, in dem die einzigen zulässigen Operationen die Zerstörung und die Zuweisung eines neuen Werts sind.

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

Weist diesem Host-Info-Objekt die Daten des Objekts „ other “ zu und gibt eine Referenz darauf zurück.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.