En esta página

QDnsLookup Class

La clase QDnsLookup representa una búsqueda DNS. Más...

Cabecera: #include <QDnsLookup>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Hereda: QObject

Tipos públicos

enum Error { NoError, ResolverError, OperationCancelledError, InvalidRequestError, InvalidReplyError, …, TimeoutError }
enum Protocol { Standard, DnsOverTls }
enum Type { A, AAAA, ANY, CNAME, MX, …, TXT }

Propiedades

Funciones públicas

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

Ranuras públicas

void abort()
void lookup()

Señales

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)

Miembros públicos estáticos

(since 6.8) quint16 defaultPortForProtocol(QDnsLookup::Protocol protocol)
(since 6.8) bool isProtocolSupported(QDnsLookup::Protocol protocol)

Descripción detallada

QDnsLookup utiliza los mecanismos provistos por el sistema operativo para realizar búsquedas DNS. Para realizar una búsqueda es necesario especificar un name y type y luego invocar la ranura lookup(). La señal finished() se emitirá al finalizar.

Por ejemplo, puedes determinar con qué servidores debe conectarse un cliente de chat XMPP para un dominio dado:

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

Una vez finalizada la petición puedes manejar los resultados con:

void MyObject::handleServers() { // Comprueba que la búsqueda ha tenido éxito. if (dns->error() != QDnsLookup::NoError) {        qWarning("DNS lookup failed");
        dns->deleteLater(); return; } // Manejar los resultados. const auto records =  dns->serviceRecords(); for(const QDnsServiceRecord &record: records) { ...}  dns->deleteLater(); }

Nota: Si simplemente quiere encontrar la(s) dirección(es) IP asociada(s) a un nombre de host, o el nombre de host asociado a una dirección IP debería usar QHostInfo en su lugar.

DNS-sobre-TLS y Datos Auténticos

QDnsLookup soporta DNS-sobre-TLS (DoT, como se especifica en el RFC 7858) en algunas plataformas. Esto incluye actualmente todas las plataformas Unix que soportan consultas normales, si QSslSocket está presente en Qt. Para consultar si existe soporte en tiempo de ejecución, utilice isProtocolSupported().

Cuando se usa DNS-sobre-TLS, QDnsLookup sólo implementa el método de autenticación "Opportunistic Privacy Profile", tal y como se describe en RFC 7858 sección 4.1. En este modo, QDnsLookup (a través de QSslSocket) sólo valida que el servidor presente un certificado válido para el servidor al que se está conectando. Los clientes pueden utilizar setSslConfiguration() para imponer restricciones adicionales y sslConfiguration() para obtener información una vez finalizada la consulta.

QDnsLookup solicitará a los servidores DNS consultados a través de TLS que realicen la autenticación de los datos que devuelven. Si confirman que los datos son válidos, la propiedad authenticData se establecerá en true. QDnsLookup no verifica la integridad de los datos por sí mismo, por lo que las aplicaciones sólo deberían confiar en esta propiedad en servidores que hayan confirmado por otros medios que son de confianza.

Datos auténticos sin TLS

QDnsLookup solicita Datos Auténticos para cualquier servidor configurado con setNameserver(), incluso si no se requiere encriptación TLS. Esto es útil cuando se consulta un servidor de nombres de caché en el mismo host que la aplicación o en una red de confianza. Aunque es similar al caso TLS, la aplicación es responsable de determinar si el servidor que eligió usar es de confianza, y si la conexión no encriptada no puede ser manipulada.

QDnsLookup obedece la configuración del sistema para solicitar Datos Auténticos en el servidor de nombres por defecto (es decir, si no se llama a setNameserver()). Actualmente esto sólo está soportado en sistemas Linux que utilicen glibc 2.31 o posterior. En cualquier otro sistema, QDnsLookup ignorará el bit AD en la cabecera de la consulta.

Documentación de tipos de miembros

enum QDnsLookup::Error

Indica todas las posibles condiciones de error encontradas durante el procesamiento de la búsqueda DNS.

ConstanteValorDescripción
QDnsLookup::NoError0ninguna condición de error.
QDnsLookup::ResolverError1se ha producido un error al inicializar el resolver DNS del sistema.
QDnsLookup::OperationCancelledError2la búsqueda fue abortada usando el método abort().
QDnsLookup::InvalidRequestError3La búsqueda DNS solicitada no es válida.
QDnsLookup::InvalidReplyError4la respuesta devuelta por el servidor no es válida.
QDnsLookup::ServerFailureError5el servidor ha encontrado un fallo interno al procesar la solicitud (SERVFAIL).
QDnsLookup::ServerRefusedError6el servidor se negó a procesar la solicitud por motivos de seguridad o de política (REFUSED).
QDnsLookup::NotFoundError7El nombre de dominio solicitado no existe (NXDOMAIN).
QDnsLookup::TimeoutError8no se ha podido contactar con el servidor o éste no ha respondido a tiempo (desde 6.6).

enum QDnsLookup::Protocol

Indica el tipo de servidor DNS que se está consultando.

ConstanteValorDescripción
QDnsLookup::Standard0DNS normal, sin cifrar, utilizando UDP y volviendo a TCP si es necesario (puerto por defecto: 53)
QDnsLookup::DnsOverTls1DNS cifrado sobre TLS (DoT, como se especifica en RFC 7858), sobre TCP (puerto por defecto: 853)

Véase también isProtocolSupported(), nameserverProtocol, y setNameserver().

enum QDnsLookup::Type

Indica el tipo de búsqueda DNS que se ha realizado.

ConstanteValorDescripción
QDnsLookup::A1Registros de direcciones IPv4.
QDnsLookup::AAAA28Registros de dirección IPv6.
QDnsLookup::ANY255Cualquier registro.
QDnsLookup::CNAME5registros de nombre canónico.
QDnsLookup::MX15registros de intercambio de correo.
QDnsLookup::NS2registros de servidor de nombres.
QDnsLookup::PTR12registros de puntero.
QDnsLookup::SRV33registros de servicio.
QDnsLookup::TLSA (since Qt 6.8)52registros de asociación TLS.
QDnsLookup::TXT16registros de texto.

Documentación de propiedades

[read-only, since 6.8] authenticData : bool

Esta propiedad indica si la respuesta ha sido autenticada por el resolver.

QDnsLookup no realiza la autenticación por sí mismo. En su lugar, confía en el servidor de nombres que fue consultado para realizar la autenticación e informar de ella. La aplicación es responsable de determinar si los servidores que configuró con setNameserver() son de confianza; si no se configuró ningún servidor, QDnsLookup obedece la configuración del sistema sobre si se debe confiar en las respuestas.

Esta propiedad puede establecerse incluso si error() indica que se ha producido un error de resolución.

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

bool isAuthenticData() const

Señal de notificador:

void finished()

Véase también setNameserver() y nameserverProtocol().

[read-only] error : Error

Esta propiedad contiene el tipo de error que se ha producido si ha fallado la búsqueda DNS, o NoError.

Funciones de acceso:

QDnsLookup::Error error() const

Señal del notificador:

void finished()

[read-only] errorString : QString

Esta propiedad contiene una descripción legible del error si la búsqueda DNS ha fallado.

Funciones de acceso:

QString errorString() const

Señal del notificador:

void finished()

[bindable] name : QString

Nota: Esta propiedad admite los enlaces QProperty.

Esta propiedad contiene el nombre a buscar.

Si el nombre a buscar está vacío, QDnsLookup intentará resolver el dominio raíz de DNS. Esa consulta se realiza normalmente con QDnsLookup::type establecido en NS.

Nota: El nombre se codificará utilizando IDNA, lo que significa que no es adecuado para consultar registros SRV compatibles con la especificación DNS-SD.

Funciones de acceso:

QString name() const
void setName(const QString &name)

Señal de notificador:

void nameChanged(const QString &name)

[bindable] nameserver : QHostAddress

Nota: Esta propiedad soporta QProperty bindings.

Esta propiedad contiene el servidor de nombres a utilizar para la búsqueda DNS.

Funciones de acceso:

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)

Señal de notificador:

void nameserverChanged(const QHostAddress &nameserver)

[bindable, since 6.6] nameserverPort : quint16

Nota: Esta propiedad soporta QProperty bindings.

Esta propiedad contiene el número de puerto del servidor de nombres a utilizar para la búsqueda DNS.

El valor 0 indica que QDnsLookup debe utilizar el puerto por defecto de nameserverProtocol().

Nota: Establecer el número de puerto a cualquier valor que no sea el predeterminado (53) puede hacer que la resolución de nombres falle, dependiendo de las limitaciones del sistema operativo y de los cortafuegos, si el nameserverProtocol() a utilizar QDnsLookup::Standard. En particular, la API de Windows utilizada por QDnsLookup es incapaz de manejar números de puerto alternativos.

Esta propiedad se introdujo en Qt 6.6.

Funciones de acceso:

quint16 nameserverPort() const
void setNameserverPort(quint16 port)

Señal de notificador:

void nameserverPortChanged(quint16 port)

[bindable, since 6.8] nameserverProtocol : Protocol

Nota: Esta propiedad soporta QProperty bindings.

Esta propiedad contiene el protocolo a usar cuando se envía la consulta DNS.

Esta propiedad se introdujo en Qt 6.8.

Funciones de acceso:

QDnsLookup::Protocol nameserverProtocol() const
void setNameserverProtocol(QDnsLookup::Protocol protocol)

Notifier signal:

void nameserverProtocolChanged(QDnsLookup::Protocol protocol)

Véase también isProtocolSupported().

[bindable] type : Type

Nota: Esta propiedad soporta QProperty bindings.

Esta propiedad contiene el tipo de búsqueda DNS.

Funciones de acceso:

QDnsLookup::Type type() const
void setType(QDnsLookup::Type)

Señal de notificador:

void typeChanged(QDnsLookup::Type type)

Documentación de la función miembro

[explicit] QDnsLookup::QDnsLookup(QObject *parent = nullptr)

Construye un objeto QDnsLookup y establece parent como objeto padre.

La propiedad type será por defecto QDnsLookup::A.

QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, QObject *parent = nullptr)

Construye un objeto QDnsLookup para type y name y establece parent como objeto padre.

QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, QObject *parent = nullptr)

Construye un objeto QDnsLookup para emitir una consulta para name del tipo de registro type, utilizando el servidor DNS nameserver que se ejecuta en el puerto DNS por defecto, y establece parent como el objeto padre.

[since 6.6] QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, quint16 port, QObject *parent = nullptr)

Construye un objeto QDnsLookup para emitir una consulta para name del tipo de registro type, usando el servidor DNS nameserver corriendo en el puerto port, y establece parent como el objeto padre.

Nota: Establecer el número de puerto a cualquier valor que no sea el predeterminado (53) puede hacer que la resolución de nombres falle, dependiendo de las limitaciones del sistema operativo y de los cortafuegos, si el nameserverProtocol() que se va a utilizar QDnsLookup::Standard. Notablemente, la API de Windows usada por QDnsLookup es incapaz de manejar números de puerto alternativos.

Esta función se introdujo en 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)

Construye un objeto QDnsLookup para enviar una consulta a name del tipo de registro type, utilizando el servidor DNS nameserver que se ejecuta en el puerto port, y establece parent como objeto padre.

La consulta se enviará utilizando protocol, si está soportado. Utilice isProtocolSupported() para comprobar si está soportado.

Nota: Establecer el número de puerto a cualquier valor que no sea el predeterminado (53) puede hacer que la resolución de nombres falle, dependiendo de las limitaciones del sistema operativo y de los cortafuegos, si el nameserverProtocol() que se va a utilizar QDnsLookup::Standard. Notablemente, la API de Windows usada por QDnsLookup es incapaz de manejar números de puerto alternativos.

Esta función se introdujo en Qt 6.8.

[virtual noexcept] QDnsLookup::~QDnsLookup()

Destruye el objeto QDnsLookup.

Es seguro eliminar un objeto QDnsLookup aunque no haya finalizado, simplemente nunca recibirá sus resultados.

[slot] void QDnsLookup::abort()

Cancela la operación de búsqueda de DNS.

Si la búsqueda ya ha finalizado, no hace nada.

QList<QDnsDomainNameRecord> QDnsLookup::canonicalNameRecords() const

Devuelve la lista de registros de nombres canónicos asociados a esta búsqueda.

[static noexcept, since 6.8] quint16 QDnsLookup::defaultPortForProtocol(QDnsLookup::Protocol protocol)

Devuelve el número de puerto estándar (por defecto) para el protocolo protocol.

Esta función se introdujo en Qt 6.8.

Véase también isProtocolSupported().

[signal] void QDnsLookup::finished()

Esta señal se emite cuando la respuesta ha terminado de procesarse.

Nota: Señal notificadora para las propiedades authenticData, error, y errorString.

QList<QDnsHostAddressRecord> QDnsLookup::hostAddressRecords() const

Devuelve la lista de registros de direcciones de host asociados a esta búsqueda.

bool QDnsLookup::isFinished() const

Devuelve si la respuesta ha finalizado o ha sido abortada.

[static, since 6.8] bool QDnsLookup::isProtocolSupported(QDnsLookup::Protocol protocol)

Devuelve true si las consultas DNS que utilizan protocol están soportadas con QDnsLookup.

Esta función se introdujo en Qt 6.8.

Véase también nameserverProtocol.

[slot] void QDnsLookup::lookup()

Realiza la búsqueda DNS.

Al finalizar, se emite la señal finished().

QList<QDnsMailExchangeRecord> QDnsLookup::mailExchangeRecords() const

Devuelve la lista de registros de intercambio de correo asociados a esta búsqueda.

Los registros están ordenados según RFC 5321, por lo que si los utiliza para conectarse a servidores, debe probarlos en el orden en que aparecen en la lista.

[signal] void QDnsLookup::nameChanged(const QString &name)

Esta señal se emite cuando cambia la búsqueda name. name es el nuevo nombre de la búsqueda.

Nota: Señal notificadora para la propiedad name.

QList<QDnsDomainNameRecord> QDnsLookup::nameServerRecords() const

Devuelve la lista de registros del servidor de nombres asociados a esta búsqueda.

QList<QDnsDomainNameRecord> QDnsLookup::pointerRecords() const

Devuelve la lista de registros de punteros asociados a esta búsqueda.

QList<QDnsServiceRecord> QDnsLookup::serviceRecords() const

Devuelve la lista de registros de servicio asociados a esta búsqueda.

Los registros están ordenados según RFC 2782, por lo que si los utiliza para conectarse a servidores, deberá probarlos en el orden en que aparecen en la lista.

[since 6.6] void QDnsLookup::setNameserver(const QHostAddress &nameserver, quint16 port)

Establece el servidor de nombres en nameserver y el puerto en port.

Nota: Establecer el número de puerto a cualquier valor que no sea el predeterminado (53) puede hacer que la resolución de nombres falle, dependiendo de las limitaciones del sistema operativo y de los cortafuegos, si el nameserverProtocol() que se va a utilizar QDnsLookup::Standard. En particular, la API de Windows utilizada por QDnsLookup es incapaz de manejar números de puerto alternativos.

Nota: Función Setter para la propiedad nameserver.

Esta función se introdujo en Qt 6.6.

Véase también QDnsLookup::nameserver y QDnsLookup::nameserverPort.

[since 6.8] void QDnsLookup::setSslConfiguration(const QSslConfiguration &sslConfiguration)

Establece el sslConfiguration a utilizar para las conexiones salientes DNS-sobre-TLS.

Esta función se introdujo en Qt 6.8.

Véase también sslConfiguration() y QSslSocket::setSslConfiguration().

QSslConfiguration QDnsLookup::sslConfiguration() const

Devuelve la configuración SSL actual.

Véase también setSslConfiguration().

QList<QDnsTextRecord> QDnsLookup::textRecords() const

Devuelve la lista de registros de texto asociados a esta búsqueda.

[since 6.8] QList<QDnsTlsAssociationRecord> QDnsLookup::tlsAssociationRecords() const

Devuelve la lista de registros de asociación TLS asociados a esta búsqueda.

De acuerdo con las normas relativas a la Autenticación de Entidades Nombradas basada en DNS (DANE), este campo debe ignorarse y no debe utilizarse para verificar la autenticidad de un servidor determinado si la autenticidad de la respuesta DNS no puede confirmarse por sí misma. Véase isAuthenticData() para más información.

Esta función se introdujo en Qt 6.8.

[signal] void QDnsLookup::typeChanged(QDnsLookup::Type type)

Esta señal se emite cuando cambia el tipo de búsqueda type. type es el nuevo tipo de búsqueda.

Nota: Señal notificadora para la propiedad type.

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