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 |
- Lista de todos los miembros, incluyendo los heredados
- QDnsLookup es parte de la API de programación de redes.
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
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.
| Constante | Valor | Descripción |
|---|---|---|
QDnsLookup::NoError | 0 | ninguna condición de error. |
QDnsLookup::ResolverError | 1 | se ha producido un error al inicializar el resolver DNS del sistema. |
QDnsLookup::OperationCancelledError | 2 | la búsqueda fue abortada usando el método abort(). |
QDnsLookup::InvalidRequestError | 3 | La búsqueda DNS solicitada no es válida. |
QDnsLookup::InvalidReplyError | 4 | la respuesta devuelta por el servidor no es válida. |
QDnsLookup::ServerFailureError | 5 | el servidor ha encontrado un fallo interno al procesar la solicitud (SERVFAIL). |
QDnsLookup::ServerRefusedError | 6 | el servidor se negó a procesar la solicitud por motivos de seguridad o de política (REFUSED). |
QDnsLookup::NotFoundError | 7 | El nombre de dominio solicitado no existe (NXDOMAIN). |
QDnsLookup::TimeoutError | 8 | no 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.
| Constante | Valor | Descripción |
|---|---|---|
QDnsLookup::Standard | 0 | DNS normal, sin cifrar, utilizando UDP y volviendo a TCP si es necesario (puerto por defecto: 53) |
QDnsLookup::DnsOverTls | 1 | DNS 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.
| Constante | Valor | Descripción |
|---|---|---|
QDnsLookup::A | 1 | Registros de direcciones IPv4. |
QDnsLookup::AAAA | 28 | Registros de dirección IPv6. |
QDnsLookup::ANY | 255 | Cualquier registro. |
QDnsLookup::CNAME | 5 | registros de nombre canónico. |
QDnsLookup::MX | 15 | registros de intercambio de correo. |
QDnsLookup::NS | 2 | registros de servidor de nombres. |
QDnsLookup::PTR | 12 | registros de puntero. |
QDnsLookup::SRV | 33 | registros de servicio. |
QDnsLookup::TLSA (since Qt 6.8) | 52 | registros de asociación TLS. |
QDnsLookup::TXT | 16 | registros 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.