Sur cette page

QHostInfo Class

La classe QHostInfo fournit des fonctions statiques permettant de rechercher des noms d'hôtes. En savoir plus...

En-tête : #include <QHostInfo>
CMake : find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake : QT += network

Remarque : toutes les fonctions de cette classe sont réentrantes.

Remarque : ces fonctions sont également sûres pour les threads:

Types publics

enum HostInfoError { NoError, HostNotFound, UnknownError }

Fonctions publiques

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)

Membres publics statiques

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)

Description détaillée

QHostInfo permet de trouver la ou les adresses IP associées à un nom d'hôte, ou le nom d'hôte associé à une adresse IP. La classe fournit deux fonctions statiques pratiques : l'une fonctionne de manière asynchrone et émet un signal une fois l'hôte trouvé, et l'autre se bloque et renvoie un objet QHostInfo.

Pour rechercher les adresses IP d'un hôte de manière asynchrone, appelez ` lookupHost()` (), qui prend comme arguments le nom d'hôte ou l'adresse IP, un objet récepteur et une signature de slot, et renvoie un identifiant. Vous pouvez interrompre la recherche en appelant ` abortHostLookup()` () avec l'identifiant de la recherche.

Exemple :

// 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);

Le slot est appelé lorsque les résultats sont prêts. Les résultats sont stockés dans un objet `QHostInfo`. Appelez ` addresses()` pour obtenir la liste des adresses IP de l’hôte, et ` hostName()` pour obtenir le nom d’hôte recherché.

Si la recherche a échoué, la fonction error() renvoie le type d’erreur survenue. La fonction errorString() fournit une description lisible par l’utilisateur de l’erreur de recherche.

Si vous souhaitez effectuer une recherche bloquante, utilisez la fonction ` QHostInfo::fromName()` :

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

QHostInfo prend en charge les noms de domaine internationalisés (IDN) via les normes IDNA et Punycode.

Pour récupérer le nom de l'hôte local, utilisez la fonction statique QHostInfo::localHostName().

QHostInfo utilise les mécanismes fournis par le système d'exploitation pour effectuer la recherche. Conformément à la RFC 6724, il n'y a aucune garantie que toutes les adresses IP enregistrées pour un domaine ou un hôte soient renvoyées.

Remarque : depuis Qt 4.6.1, QHostInfo utilise plusieurs threads pour la recherche DNS au lieu d’un seul thread DNS dédié. Cela améliore les performances, mais modifie également l’ordre d’émission des signaux lors de l’utilisation de ` lookupHost()` par rapport aux versions précédentes de Qt.

Remarque : depuis Qt 4.6.3, QHostInfo utilise un petit cache DNS interne de 60 secondes pour améliorer les performances.

Voir également QAbstractSocket, RFC 3492 et RFC 6724.

Documentation sur les types de membres

enum QHostInfo::HostInfoError

Cette énumération décrit les différentes erreurs pouvant survenir lors de la résolution d'un nom d'hôte.

ConstanteValeurDescription
QHostInfo::NoError0La recherche a abouti.
QHostInfo::HostNotFound1Aucune adresse IP n'a été trouvée pour l'hôte.
QHostInfo::UnknownError2Une erreur inconnue s'est produite.

Voir également error() et setError().

Documentation des fonctions membres

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

Crée un objet d'informations sur l'hôte vide avec l'ID de recherche id.

Voir également lookupId().

QHostInfo::QHostInfo(const QHostInfo &other)

Crée une copie de other.

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

La fonction « move » construit un nouvel objet `QHostInfo` à partir de ` other`.

Remarque : l'objet d'origine other est placé dans un état partiellement formé, dans lequel les seules opérations valides sont la destruction et l'affectation d'une nouvelle valeur.

[noexcept] QHostInfo::~QHostInfo()

Supprime l'objet d'informations sur l'hôte.

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

Interrompt la recherche d’hôte correspondant à l’identifiant id, tel que renvoyé par la fonction lookupHost().

Remarque : cette fonction est thread-safe.

Voir également lookupHost() et lookupId().

QList<QHostAddress> QHostInfo::addresses() const

Renvoie la liste des adresses IP associées à hostName(). Cette liste peut être vide.

Exemple :

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

Voir également setAddresses(), hostName() et error().

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

Vide le cache DNS interne utilisé par lookupHost() et fromName().

Appelez cette fonction lorsque les informations d'hôte mises en cache risquent d'être obsolètes et qu'il est nécessaire d'effectuer de nouvelles requêtes. Voici quelques cas d'utilisation typiques :

  • L'application a détecté un changement de configuration réseau (par exemple, passage du Wi-Fi à l'Ethernet, ou connexion/déconnexion à un VPN).
  • On sait que l’adresse d’un serveur a changé (par exemple, DNS dynamique ou basculement), et l’application doit résoudre à nouveau le nom d’hôte. Notez que les serveurs DNS en amont et les résolveurs ont leur propre TTL ; vider le cache ici ne les affecte pas, de sorte que la nouvelle requête peut encore renvoyer l’adresse précédente jusqu’à l’expiration du TTL en amont.
  • L’application utilise un résultat mis en cache pour les requêtes, mais elle nécessite une nouvelle requête si le cache a expiré ou n’est plus valide.

Cette fonction se contente de vider le cache. Elle n’annule pas les recherches en cours ; celles-ci seront menées à terme et leurs résultats seront tout de même fournis. Utilisez-la lorsque vous souhaitez que les futures recherches soient effectuées à nouveau sans affecter les opérations en cours.

Remarque : cette fonction est thread-safe.

Cette fonction a été introduite dans Qt 6.12.

Voir également lookupHost() et fromName().

QHostInfo::HostInfoError QHostInfo::error() const

Renvoie le type d'erreur survenue si la recherche du nom d'hôte a échoué ; sinon, renvoie « NoError ».

Voir également setError() et errorString().

QString QHostInfo::errorString() const

Si la recherche a échoué, cette fonction renvoie une description lisible de l'erreur ; dans le cas contraire, elle renvoie « Erreur inconnue ».

Voir également setErrorString() et error().

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

Recherche la ou les adresses IP de l’hôte spécifié name. La fonction se bloque pendant la recherche, ce qui signifie que l’exécution du programme est suspendue jusqu’à ce que les résultats de la recherche soient disponibles. Renvoie le résultat de la recherche dans un objet QHostInfo.

Si vous transmettez une adresse IP littérale à name au lieu d’un nom d’hôte, QHostInfo recherchera le nom de domaine correspondant à cette adresse IP (par exemple, QHostInfo effectuera une recherche inversée ). En cas de succès, l’ QHostInfo renvoyé contiendra à la fois le nom de domaine résolu et les adresses IP associées au nom d’hôte.

Remarque : cette fonction est thread-safe.

Voir également lookupHost().

QString QHostInfo::hostName() const

Renvoie le nom de l'hôte dont les adresses IP ont été recherchées.

Voir également setHostName() et localHostName().

[static] QString QHostInfo::localDomainName()

Renvoie le domaine DNS de cette machine.

Remarque : les domainesDNS ne sont pas liés aux noms de domaine présents dans les réseaux Windows.

Remarque : cette fonction est thread-safe.

Voir également hostName().

[static] QString QHostInfo::localHostName()

Renvoie le nom d'hôte de cette machine, s'il est configuré. Notez qu'il n'est pas garanti que les noms d'hôte soient uniques au niveau mondial, en particulier s'ils ont été configurés automatiquement.

Cette fonction ne garantit pas que le nom d'hôte renvoyé soit un nom de domaine complet (FQDN). Pour cela, utilisez fromName() afin de résoudre le nom renvoyé en un FQDN.

Cette fonction renvoie le même résultat que QSysInfo::machineHostName().

Remarque : cette fonction est thread-safe.

Voir également hostName() et localDomainName().

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

Recherche la ou les adresses IP associées au nom d'hôte name et renvoie un identifiant pour cette recherche. Lorsque le résultat de la recherche est prêt, le slot ou le signal member de receiver est appelé avec l'argument QHostInfo. L'objet QHostInfo peut alors être consulté pour obtenir les résultats de la recherche.

La recherche s’effectue par un simple appel de fonction, par exemple :

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

L’implémentation du slot affiche des informations de base sur les adresses renvoyées par la recherche, ou signale une erreur en cas d’échec :

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

Si vous transmettez une adresse IP littérale à name au lieu d’un nom d’hôte, QHostInfo recherchera le nom de domaine correspondant à cette adresse IP (par exemple, QHostInfo effectuera une recherche inversée ). En cas de succès, l’ QHostInfo résultant contiendra à la fois le nom de domaine résolu et les adresses IP associées au nom d’hôte. Exemple :

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

Remarque : l’ordre dans lequel les signaux seront émisn’est pas garanti si vous lancez plusieurs requêtes avec `lookupHost()`.

Remarque : dans les versions de Qt antérieures à la version 6.7, cette fonction prenait l’ receiver sous la forme (non-const) QObject*.

Remarque : cette fonction est sûre pour les threads.

Voir également abortHostLookup(), addresses(), error() et fromName().

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

Recherche la ou les adresses IP associées au nom d'hôte name et renvoie un identifiant pour la recherche. Lorsque le résultat de la recherche est prêt, la fonction functor est appelée avec l'argument QHostInfo. L'objet QHostInfo peut alors être consulté pour obtenir les résultats de la recherche.

La fonction ` functor ` sera exécutée dans le thread qui effectue l'appel à `lookupHost` ; ce thread doit disposer d'une boucle d'événements Qt en cours d'exécution.

Remarque : l’ordre dans lequel les signaux seront émisn’est pas garanti si vous lancez plusieurs requêtes avec `lookupHost()`.

Il s'agit d'une fonction surchargée.

Remarque : cette fonction est thread-safe.

Voir également abortHostLookup(), addresses(), error() et fromName().

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

Recherche la ou les adresses IP associées au nom d'hôte name et renvoie un identifiant pour la recherche. Lorsque le résultat de la recherche est prêt, la méthode functor est appelée avec l'argument QHostInfo. L'objet QHostInfo peut alors être consulté pour obtenir les résultats de la recherche.

Si ` context ` est détruit avant la fin de la recherche, la fonction ` functor ` ne sera pas appelée. La fonction ` functor ` s’exécutera dans le thread de ` context`. Le thread du contexte doit disposer d’une boucle d’événements Qt en cours d’exécution.

Voici une autre signature pour cette fonction :

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

Dans ce cas, lorsque le résultat de la recherche est prêt, le slot ou le signal function dans receiver est appelé avec un argument QHostInfo. L'objet QHostInfo peut alors être inspecté pour obtenir les résultats de la recherche.

Remarque : l’ordre dans lequel les signaux seront émisn’est pas garanti si vous lancez plusieurs requêtes avec lookupHost().

Il s'agit d'une fonction surchargée.

Remarque : cette fonction est thread-safe.

Voir également abortHostLookup(), addresses(), error() et fromName().

int QHostInfo::lookupId() const

Renvoie l'identifiant de cette recherche.

Voir également setLookupId(), abortHostLookup() et hostName().

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

Définit la liste des adresses de ce site QHostInfo sur addresses.

Voir également addresses().

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

Définit le type d'erreur de cette QHostInfo sur error.

Voir également error() et errorString().

void QHostInfo::setErrorString(const QString &str)

Définit la description lisible par l'utilisateur de l'erreur survenue sur str en cas d'échec de la recherche.

Voir également errorString() et setError().

void QHostInfo::setHostName(const QString &hostName)

Définit le nom d'hôte de ce site QHostInfo sur hostName.

Voir également hostName().

void QHostInfo::setLookupId(int id)

Définit l'identifiant de cette table de correspondance sur id.

Voir également lookupId() et lookupHost().

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

Remplace ces informations sur l'hôte par other. Cette opération est très rapide et ne pose jamais de problème.

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

Cette opération attribue la valeur de other à cette instance de QHostInfo.

Remarque : l’objet d’origine other est placé dans un état partiellement formé, dans lequel les seules opérations valides sont la destruction et l’affectation d’une nouvelle valeur.

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

Attribue les données de l'objet « other » à cet objet d'informations sur l'hôte, puis renvoie une référence à celui-ci.

© 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.