QDnsLookup Class
La classe QDnsLookup représente une requête DNS. En savoir plus...
| En-tête : | #include <QDnsLookup> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Hérite de : | QObject |
- Liste de tous les membres, y compris les membres hérités
- QDnsLookup fait partie de l'API de programmation réseau.
Types publics
| enum | Error { NoError, ResolverError, OperationCancelledError, InvalidRequestError, InvalidReplyError, …, TimeoutError } |
| enum | Protocol { Standard, DnsOverTls } |
| enum | Type { A, AAAA, ANY, CNAME, MX, …, TXT } |
Propriétés
|
|
Fonctions publiques
| QDnsLookup(QObject *parent = nullptr) | |
| QDnsLookup(QDnsLookup::Type type, const QString &name, QObject *parent = nullptr) | |
| QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, QObject *parent = nullptr) | |
(since 6.6) | QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, quint16 port, QObject *parent = nullptr) |
(since 6.8) | QDnsLookup(QDnsLookup::Type type, const QString &name, QDnsLookup::Protocol protocol, const QHostAddress &nameserver, quint16 port = 0, QObject *parent = nullptr) |
| virtual | ~QDnsLookup() |
| QBindable<QString> | bindableName() |
| QBindable<QHostAddress> | bindableNameserver() |
| QBindable<quint16> | bindableNameserverPort() |
| QBindable<QDnsLookup::Protocol> | bindableNameserverProtocol() |
| QBindable<QDnsLookup::Type> | bindableType() |
| QList<QDnsDomainNameRecord> | canonicalNameRecords() const |
| QDnsLookup::Error | error() const |
| QString | errorString() const |
| QList<QDnsHostAddressRecord> | hostAddressRecords() const |
| bool | isAuthenticData() const |
| bool | isFinished() const |
| QList<QDnsMailExchangeRecord> | mailExchangeRecords() const |
| QString | name() const |
| QList<QDnsDomainNameRecord> | nameServerRecords() const |
| QHostAddress | nameserver() const |
| quint16 | nameserverPort() const |
| QDnsLookup::Protocol | nameserverProtocol() const |
| QList<QDnsDomainNameRecord> | pointerRecords() const |
| QList<QDnsServiceRecord> | serviceRecords() const |
| void | setName(const QString &name) |
| void | setNameserver(const QHostAddress &nameserver) |
| void | setNameserver(QDnsLookup::Protocol protocol, const QHostAddress &nameserver, quint16 port = 0) |
(since 6.6) void | setNameserver(const QHostAddress &nameserver, quint16 port) |
| void | setNameserverPort(quint16 port) |
| void | setNameserverProtocol(QDnsLookup::Protocol protocol) |
(since 6.8) void | setSslConfiguration(const QSslConfiguration &sslConfiguration) |
| void | setType(QDnsLookup::Type) |
| QSslConfiguration | sslConfiguration() const |
| QList<QDnsTextRecord> | textRecords() const |
(since 6.8) QList<QDnsTlsAssociationRecord> | tlsAssociationRecords() const |
| QDnsLookup::Type | type() const |
Emplacements publics
Signaux
| void | finished() |
| void | nameChanged(const QString &name) |
| void | nameserverChanged(const QHostAddress &nameserver) |
| void | nameserverPortChanged(quint16 port) |
| void | nameserverProtocolChanged(QDnsLookup::Protocol protocol) |
| void | typeChanged(QDnsLookup::Type type) |
Membres publics statiques
(since 6.8) quint16 | defaultPortForProtocol(QDnsLookup::Protocol protocol) |
(since 6.8) bool | isProtocolSupported(QDnsLookup::Protocol protocol) |
Description détaillée
QDnsLookup utilise les mécanismes fournis par le système d’exploitation pour effectuer des recherches DNS. Pour effectuer une recherche, vous devez spécifier une adresse IP ( name ) et un nom de domaine ( type ), puis appeler le slot lookup(). Le signal finished() sera émis une fois la recherche terminée.
Par exemple, vous pouvez déterminer à quels serveurs un client de chat XMPP doit se connecter pour un domaine donné à l’aide de :
void MyObject::lookupServers()
{
// Create a DNS lookup.
dns = new QDnsLookup(this);
connect(dns, &QDnsLookup::finished, this, &MyObject::handleServers);
// Find the XMPP servers for gmail.com
dns->setType(QDnsLookup::SRV);
dns->setName("_xmpp-client._tcp.gmail.com");
dns->lookup();
}Une fois la requête terminée, vous pouvez traiter les résultats avec :
void MyObject::handleServers()
{
// Vérifier que la recherche a abouti.
if (dns->error() != QDnsLookup::NoError) {
qWarning("DNS lookup failed");
dns->deleteLater();
return;
}
// Traiter les résultats.
const auto records = dns->serviceRecords();
for (const QDnsServiceRecord&record: records) {
...
}
dns->deleteLater();
}Remarque : si vous souhaitez simplement trouver la ou les adresses IP associées à un nom d’hôte, ou le nom d’hôte associé à une adresse IP, vous devez plutôt utiliser QHostInfo.
DNS-over-TLS et données authentifiées
QDnsLookup prend en charge le DNS-over-TLS (DoT, tel que spécifié par la RFC 7858) sur certaines plateformes. Cela inclut actuellement toutes les plateformes Unix sur lesquelles les requêtes standard sont prises en charge, à condition que la prise en charge d’ QSslSocket soit présente dans Qt. Pour vérifier si cette prise en charge est disponible lors de l’exécution, utilisez isProtocolSupported().
Lors de l’utilisation de DNS-over-TLS, QDnsLookup n’implémente que la méthode d’authentification « Opportunistic Privacy Profile », telle que décrite dans la section 4.1 de la RFC 7858. Dans ce mode, QDnsLookup (via ` QSslSocket`) vérifie uniquement que le serveur présente un certificat valide pour le serveur auquel on se connecte. Les clients peuvent utiliser ` setSslConfiguration()` pour imposer des restrictions supplémentaires et ` sslConfiguration()` pour obtenir des informations une fois la requête terminée.
QDnsLookup demandera aux serveurs DNS interrogés via TLS d’effectuer une authentification des données qu’ils renvoient. S’ils confirment que les données sont valides, la propriété authenticData sera définie sur true. QDnsLookup ne vérifie pas lui-même l’intégrité des données ; les applications ne doivent donc se fier à cette propriété que pour les serveurs dont elles ont confirmé la fiabilité par d’autres moyens.
Données authentifiées sans TLS
QDnsLookup demande des données authentifiées pour tout serveur configuré avec setNameserver(), même si le chiffrement TLS n’est pas requis. Cela s’avère utile lors de l’interrogation d’un serveur de noms à mise en cache situé sur le même hôte que l’application ou sur un réseau de confiance. Bien que similaire au cas du TLS, il incombe à l’application de déterminer si le serveur qu’elle a choisi d’utiliser est fiable et si la connexion non chiffrée ne peut pas être altérée.
QDnsLookup respecte la configuration système pour demander des données authentifiées sur le serveur de noms par défaut (c'est-à-dire si la fonction setNameserver() n'est pas appelée). Cette fonctionnalité n'est actuellement prise en charge que sur les systèmes Linux utilisant glibc 2.31 ou une version ultérieure. Sur tout autre système, QDnsLookup ignorera le bit AD dans l'en-tête de la requête.
Documentation sur les types de membres
enum QDnsLookup::Error
Indique toutes les conditions d'erreur possibles détectées lors du traitement de la requête DNS.
| Constante | Valeur | Description |
|---|---|---|
QDnsLookup::NoError | 0 | Aucune condition d'erreur. |
QDnsLookup::ResolverError | 1 | Une erreur s'est produite lors de l'initialisation du résolveur DNS du système. |
QDnsLookup::OperationCancelledError | 2 | La recherche a été interrompue à l'aide de la méthode ` abort()`. |
QDnsLookup::InvalidRequestError | 3 | La recherche DNS demandée n'était pas valide. |
QDnsLookup::InvalidReplyError | 4 | La réponse renvoyée par le serveur était invalide. |
QDnsLookup::ServerFailureError | 5 | Le serveur a rencontré une défaillance interne lors du traitement de la requête (SERVFAIL). |
QDnsLookup::ServerRefusedError | 6 | Le serveur a refusé de traiter la requête pour des raisons de sécurité ou de politique (REFUSED). |
QDnsLookup::NotFoundError | 7 | Le nom de domaine demandé n'existe pas (NXDOMAIN). |
QDnsLookup::TimeoutError | 8 | Le serveur était inaccessible ou n’a pas répondu à temps (depuis la version 6.6). |
enum QDnsLookup::Protocol
Indique le type de serveur DNS interrogé.
| Constante | Valeur | Description |
|---|---|---|
QDnsLookup::Standard | 0 | DNS standard, non chiffré, utilisant le protocole UDP et basculant vers TCP si nécessaire (port par défaut : 53) |
QDnsLookup::DnsOverTls | 1 | DNS chiffré via TLS (DoT, tel que spécifié par la RFC 7858), sur TCP (port par défaut : 853) |
Voir également isProtocolSupported(), nameserverProtocol et setNameserver().
enum QDnsLookup::Type
Indique le type de recherche DNS qui a été effectuée.
| Constante | Valeur | Description |
|---|---|---|
QDnsLookup::A | 1 | Enregistrements d'adresses IPv4. |
QDnsLookup::AAAA | 28 | Enregistrements d'adresses IPv6. |
QDnsLookup::ANY | 255 | Enregistrements « any ». |
QDnsLookup::CNAME | 5 | Enregistrements de nom canonique. |
QDnsLookup::MX | 15 | Enregistrements d'échange de courrier. |
QDnsLookup::NS | 2 | Enregistrements de serveurs de noms. |
QDnsLookup::PTR | 12 | Enregistrements de pointeurs. |
QDnsLookup::SRV | 33 | enregistrements de service. |
QDnsLookup::TLSA (since Qt 6.8) | 52 | enregistrements d'association TLS. |
QDnsLookup::TXT | 16 | enregistrements de texte. |
Documentation sur les propriétés
[read-only, since 6.8] authenticData : bool
Cette propriété s'applique que la réponse ait été authentifiée ou non par le résolveur.
QDnsLookup Elle n'effectue pas l'authentification elle-même. Elle se fie plutôt au serveur de noms interrogé pour effectuer l'authentification et en rendre compte. L'application est chargée de déterminer si les serveurs qu'elle a configurés avec ` setNameserver()` sont fiables ; si aucun serveur n'a été défini, ` QDnsLookup ` suit la configuration système pour savoir si les réponses doivent être considérées comme fiables.
Cette propriété peut être définie même si error() indique qu’une erreur de résolveur s’est produite.
Cette énumération a été introduite dans Qt 6.8.
Fonctions d’accès :
| bool | isAuthenticData() const |
Signal de notification :
| void | finished() |
Voir également setNameserver() et nameserverProtocol().
[read-only] error : Error
Cette propriété contient le type d'erreur survenue en cas d'échec de la recherche DNS, ou la valeur « NoError ».
Fonctions d’accès :
| QDnsLookup::Error | error() const |
Signal de notification :
| void | finished() |
[read-only] errorString : QString
Cette propriété contient une description compréhensible par l'utilisateur de l'erreur en cas d'échec de la recherche DNS.
Fonctions d'accès :
| QString | errorString() const |
Signal de notification :
| void | finished() |
[bindable] name : QString
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient le nom à rechercher.
Si le nom à rechercher est vide, QDnsLookup tentera de résoudre le domaine racine du DNS. Cette requête est généralement effectuée avec QDnsLookup::type défini sur NS.
Remarque : le nom sera encodé à l’aide d’IDNA, ce qui signifie qu’il n’est pas adapté à l’interrogation d’enregistrements SRV compatibles avec la spécification DNS-SD.
Fonctions d’accès :
| QString | name() const |
| void | setName(const QString &name) |
Signal de notification :
| void | nameChanged(const QString &name) |
[bindable] nameserver : QHostAddress
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient le serveur de noms à utiliser pour la recherche DNS.
Fonctions d'accès :
| QHostAddress | nameserver() const |
| void | setNameserver(const QHostAddress &nameserver) |
| void | setNameserver(QDnsLookup::Protocol protocol, const QHostAddress &nameserver, quint16 port = 0) |
| void | setNameserver(const QHostAddress &nameserver, quint16 port) |
Signal de notification :
| void | nameserverChanged(const QHostAddress &nameserver) |
[bindable, since 6.6] nameserverPort : quint16
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient le numéro de port du serveur de noms à utiliser pour la recherche DNS.
La valeur 0 indique qu'QDnsLookup doit utiliser le port par défaut pour l'nameserverProtocol().
Remarque : définir le numéro de port sur une valeur autre que la valeur par défaut (53) peut entraîner l'échec de la résolution de nom, en fonction des limitations du système d'exploitation et des pare-feu, si la fonction ` nameserverProtocol()` à utiliser est ` QDnsLookup::Standard`. Il convient de noter que l'API Windows utilisée par ` QDnsLookup ` ne prend pas en charge les numéros de port alternatifs.
Cette énumération a été introduite dans Qt 6.6.
Fonctions d'accès :
| quint16 | nameserverPort() const |
| void | setNameserverPort(quint16 port) |
Signal de notification :
| void | nameserverPortChanged(quint16 port) |
[bindable, since 6.8] nameserverProtocol : Protocol
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient le protocole à utiliser lors de l'envoi de la requête DNS
Cette énumération a été introduite dans Qt 6.8.
Fonctions d'accès :
| QDnsLookup::Protocol | nameserverProtocol() const |
| void | setNameserverProtocol(QDnsLookup::Protocol protocol) |
Signal de notification :
| void | nameserverProtocolChanged(QDnsLookup::Protocol protocol) |
Voir également isProtocolSupported().
[bindable] type : Type
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient le type de recherche DNS.
Fonctions d’accès :
| QDnsLookup::Type | type() const |
| void | setType(QDnsLookup::Type) |
Signal de notification :
| void | typeChanged(QDnsLookup::Type type) |
Documentation des fonctions membres
[explicit] QDnsLookup::QDnsLookup(QObject *parent = nullptr)
Crée un objet QDnsLookup et définit parent comme objet parent.
La propriété type prendra par défaut la valeur QDnsLookup::A.
QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, QObject *parent = nullptr)
Crée un objet QDnsLookup pour les valeurs « type » et « name » fournies, et définit « parent » comme objet parent.
QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, QObject *parent = nullptr)
Crée un objet QDnsLookup afin d'effectuer une requête sur name pour le type d'enregistrement type, en utilisant le serveur DNS nameserver fonctionnant sur le port DNS par défaut, et définit parent comme objet parent.
[since 6.6] QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, quint16 port, QObject *parent = nullptr)
Crée un objet QDnsLookup pour lancer une requête concernant l'adresse name de type d'enregistrement type, en utilisant le serveur DNS nameserver fonctionnant sur le port port, et définit parent comme objet parent.
Remarque : définir le numéro de port sur une valeur autre que la valeur par défaut (53) peut entraîner l’échec de la résolution de nom, en fonction des limitations du système d’exploitation et des pare-feu, si l’ nameserverProtocol() à utiliser est QDnsLookup::Standard. Il convient notamment de noter que l’API Windows utilisée par QDnsLookup ne prend pas en charge les numéros de port alternatifs.
Cette fonction a été introduite dans Qt 6.6.
[since 6.8] QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, QDnsLookup::Protocol protocol, const QHostAddress &nameserver, quint16 port = 0, QObject *parent = nullptr)
Crée un objet QDnsLookup afin d'effectuer une requête sur name pour le type d'enregistrement type, en utilisant le serveur DNS nameserver fonctionnant sur le port port, et définit parent comme objet parent.
La requête sera envoyée via protocol, si cette méthode est prise en charge. Utilisez isProtocolSupported() pour vérifier si elle est prise en charge.
Remarque : définir le numéro de port sur une valeur autre que la valeur par défaut (53) peut entraîner l'échec de la résolution de nom, en fonction des limitations du système d'exploitation et des pare-feu, si la fonction nameserverProtocol() utilisée est QDnsLookup::Standard. Il convient notamment de noter que l’API Windows utilisée par QDnsLookup ne prend pas en charge les numéros de port alternatifs.
Cette fonction a été introduite dans Qt 6.8.
[virtual noexcept] QDnsLookup::~QDnsLookup()
Supprime l'objet ` QDnsLookup `.
Vous pouvez supprimer un objet ` QDnsLookup ` en toute sécurité, même s'il n'a pas encore terminé son exécution ; vous ne recevrez tout simplement jamais ses résultats.
[slot] void QDnsLookup::abort()
Interrompt l'opération de recherche DNS.
Si la recherche est déjà terminée, ne fait rien.
QList<QDnsDomainNameRecord> QDnsLookup::canonicalNameRecords() const
Renvoie la liste des enregistrements de nom canonique associés à cette recherche.
[static noexcept, since 6.8] quint16 QDnsLookup::defaultPortForProtocol(QDnsLookup::Protocol protocol)
Renvoie le numéro de port standard (par défaut) du protocole protocol.
Cette fonction a été introduite dans Qt 6.8.
Voir également ` isProtocolSupported()`.
[signal] void QDnsLookup::finished()
Ce signal est émis lorsque le traitement de la réponse est terminé.
Remarque : signalde notification pour les propriétés authenticData, error et errorString.
QList<QDnsHostAddressRecord> QDnsLookup::hostAddressRecords() const
Renvoie la liste des enregistrements d'adresses hôtes associés à cette recherche.
bool QDnsLookup::isFinished() const
Indique si la réponse s'est terminée ou si elle a été interrompue.
[static, since 6.8] bool QDnsLookup::isProtocolSupported(QDnsLookup::Protocol protocol)
Renvoie « true » si les requêtes DNS utilisant « protocol » sont prises en charge avec « QDnsLookup ».
Cette fonction a été introduite dans Qt 6.8.
Voir aussi nameserverProtocol.
[slot] void QDnsLookup::lookup()
Effectue la recherche DNS.
Le signal « finished() » est émis une fois l'opération terminée.
QList<QDnsMailExchangeRecord> QDnsLookup::mailExchangeRecords() const
Renvoie la liste des enregistrements d'échange de courrier associés à cette recherche.
Ces enregistrements sont triés conformément à la norme RFC 5321; par conséquent, si vous les utilisez pour vous connecter à des serveurs, vous devez les essayer dans l'ordre dans lequel ils sont répertoriés.
[signal] void QDnsLookup::nameChanged(const QString &name)
Ce signal est émis lorsque l'name de la table de correspondance change. « name » est le nouveau nom de la table de correspondance.
Remarque : signalde notification pour la propriété name.
QList<QDnsDomainNameRecord> QDnsLookup::nameServerRecords() const
Renvoie la liste des enregistrements de serveurs de noms associés à cette recherche.
QList<QDnsDomainNameRecord> QDnsLookup::pointerRecords() const
Renvoie la liste des enregistrements de pointeurs associés à cette recherche.
QList<QDnsServiceRecord> QDnsLookup::serviceRecords() const
Renvoie la liste des enregistrements de service associés à cette recherche.
Les enregistrements sont triés conformément à la norme RFC 2782; par conséquent, si vous les utilisez pour vous connecter à des serveurs, vous devez les essayer dans l'ordre dans lequel ils sont répertoriés.
[since 6.6] void QDnsLookup::setNameserver(const QHostAddress &nameserver, quint16 port)
Définit le serveur de noms sur nameserver et le port sur port.
Remarque : définir le numéro de port sur une valeur autre que la valeur par défaut (53) peut entraîner un échec de la résolution de nom, en fonction des limitations du système d'exploitation et des pare-feu, si le serveur de noms nameserverProtocol() à utiliser est QDnsLookup::Standard. Il est à noter que l'API Windows utilisée par QDnsLookup ne prend pas en charge les numéros de port alternatifs.
Remarque : fonctionde définition pour la propriété nameserver.
Cette fonction a été introduite dans Qt 6.6.
Voir également QDnsLookup::nameserver et QDnsLookup::nameserverPort.
[since 6.8] void QDnsLookup::setSslConfiguration(const QSslConfiguration &sslConfiguration)
Définit l'sslConfiguration e à utiliser pour les connexions DNS-over-TLS sortantes.
Cette fonction a été introduite dans Qt 6.8.
Voir également ` sslConfiguration()` et ` QSslSocket::setSslConfiguration()`.
QSslConfiguration QDnsLookup::sslConfiguration() const
Renvoie la configuration SSL actuelle.
Voir également la fonction ` setSslConfiguration()`.
QList<QDnsTextRecord> QDnsLookup::textRecords() const
Renvoie la liste des enregistrements de texte associés à cette recherche.
[since 6.8] QList<QDnsTlsAssociationRecord> QDnsLookup::tlsAssociationRecords() const
Renvoie la liste des enregistrements d'association TLS associés à cette requête.
Conformément aux normes relatives à l’authentification des entités nommées basée sur le DNS (DANE), ce champ doit être ignoré et ne doit pas être utilisé pour vérifier l’authenticité d’un serveur donné si l’authenticité de la réponse DNS ne peut pas être confirmée. Voir isAuthenticData() pour plus d’informations.
Cette fonction a été introduite dans Qt 6.8.
[signal] void QDnsLookup::typeChanged(QDnsLookup::Type type)
Ce signal est émis lorsque l'type de la recherche change. type correspond au nouveau type de recherche.
Remarque : signalde notification pour l'type de la propriété.
© 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.