QDnsLookup 类

QDnsLookup 类表示 DNS 查找。 更多...

头文件 #include <QDnsLookup>
CMakefind_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmakeQT += network
继承 QObject

公共类型

枚举Error { NoError, ResolverError, OperationCancelledError, InvalidRequestError, InvalidReplyError, …, TimeoutError }
枚举Type { A, AAAA, ANY, CNAME, MX, …, TXT }

属性

公共函数

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)
virtual~QDnsLookup()
QBindable<QString>bindableName()
QBindable<QHostAddress>bindableNameserver()
QBindable<quint16>bindableNameserverPort()
QBindable<QDnsLookup::Type>bindableType()
QList<QDnsDomainNameRecord>canonicalNameRecords() const
QDnsLookup::Errorerror() const
QStringerrorString() const
QList<QDnsHostAddressRecord>hostAddressRecords() const
boolisFinished() const
QList<QDnsMailExchangeRecord>mailExchangeRecords() const
QStringname() const
QList<QDnsDomainNameRecord>nameServerRecords() const
QHostAddressnameserver() const
quint16nameserverPort() const
QList<QDnsDomainNameRecord>指针记录() const
QList<QDnsServiceRecord>服务记录() const
voidsetName(const QString &name)
voidsetNameserver(const QHostAddress &nameserver)
(自6.6版本起) voidsetNameserver(const QHostAddress &nameserver, quint16 port)
voidsetNameserverPort(quint16 port)
voidsetType(QDnsLookup::Type)
QList<QDnsTextRecord>文本记录() const
QDnsLookup::Typetype() const

公共槽

void终止()
void查找()

信号

void完成()
voidnameChanged(const QString &name)
voidnameserverChanged(const QHostAddress &nameserver)
voidnameserverPortChanged(quint16 port)
voidtypeChanged(QDnsLookup::Type type)

详细描述

QDnsLookup使用操作系统提供的机制来执行DNS查找。要执行查找,您需要指定一个名称类型,然后调用lookup()槽。完成时将发出finished()信号。

例如,您可以使用以下方法确定XMPP聊天客户端应连接到给定域的服务器:

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

请求完成后,您可以处理结果:

void MyObject::handleServers()
{
    // Check the lookup succeeded.
    if (dns->error() != QDnsLookup::NoError) {
        qWarning("DNS lookup failed");
        dns->deleteLater();
        return;
    }

    // Handle the results.
    const auto records = dns->serviceRecords();
    for (const QDnsServiceRecord &record : records) {
        ...
    }
    dns->deleteLater();
}

注意:如果您只想查找与主机名关联的IP地址或将IP地址关联的主机名,您应使用QHostInfo

成员类型文档

枚举QDnsLookup::Error

指示在处理DNS查找时发现的所有可能错误条件。

常量描述
QDnsLookup::NoError0无错误条件。
QDnsLookup::ResolverError1初始化系统DNS解析器时出错。
QDnsLookup::OperationCancelledError2使用abort()方法终止查找。
QDnsLookup::InvalidRequestError3请求的DNS查找无效。
QDnsLookup::InvalidReplyError4服务器返回的响应无效。
QDnsLookup::ServerFailureError5在处理请求时服务器遇到了内部错误(SERVFAIL)。
QDnsLookup::ServerRefusedError6由于安全或策略原因,服务器拒绝处理请求(REFUSED)。
QDnsLookup::NotFoundError7请求的域名不存在(NXDOMAIN)。
QDnsLookup::TimeoutError8未达到服务器或服务器未及时回复(自6.6版本起)。

枚举QDnsLookup::Type

指示执行了DNS查找的类型。

常量描述
QDnsLookup::A1IPv4地址记录。
QDnsLookup::AAAA28IPv6地址记录。
QDnsLookup::ANY255任何记录。
QDnsLookup::CNAME5规范名称记录。
QDnsLookup::MX15邮件交换记录。
QDnsLookup::NS2名称服务器记录。
QDnsLookup::PTR12指针记录。
QDnsLookup::SRV33服务记录。
QDnsLookup::TXT16文本记录。

属性文档

[只读] error : const Error

如果 DNS 查找失败,则此属性持有发生的错误类型,或NoError

访问函数

QDnsLookup::Errorerror() const

通知信号

void完成()

[只读] errorString : const QString

如果 DNS 查找失败,则此属性持有对错误的文本描述。

访问函数

QStringerrorString() const

通知信号

void完成()

[可绑定] name : QString

注意: 此属性支持 QProperty 绑定。

此属性持有要查找的名称。

如果要查找的名称为空,QDnsLookup 将尝试解析 DNS 的根域名。该查询通常使用 QDnsLookup::type 设置为 NS 来执行。

注意: 名称将使用 IDNA 编码,这意味着它不适用于查询与 DNS-SD 规范兼容的 SRV 记录。

[可绑定] nameserver : QHostAddress

注意: 此属性支持 QProperty 绑定。

此属性持有用于 DNS 查找的域名服务器。

[可绑定,自 6.6 版起] nameserverPort : quint16

注意: 此属性支持 QProperty 绑定。

此属性持有用于 DNS 查找的域名服务器端口号。

注意: 将端口号设置为除默认值(53)之外的任何值可能会导致名称解析失败,具体取决于操作系统的限制和防火墙。值得注意的是,QDnsLookup 所使用的 Windows API 无法处理备用端口号。

此属性是在 Qt 6.6 中引入的。

[可绑定] type : Type

注意: 此属性支持 QProperty 绑定。

此属性持有 DNS 查找的类型。

成员函数文档

[显式构造函数] QDnsLookup::QDnsLookup(QObject *parent = nullptr)

构造一个 QDnsLookup 对象,并设置 parent 为父对象。

type 属性将默认为 QDnsLookup::A

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

构造一个用于给定 typename 的 QDnsLookup 对象,并设置 parent 为父对象。

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

构造一个用于对 name 进行记录类型 type 的查询的 QDnsLookup 对象,使用运行在默认 DNS 端口的域名服务器 nameserver,并设置 parent 为父对象。

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

构造一个QDnsLookup对象,用于查询记录类型为type的名称name,使用运行在端口port上的DNS服务器nameserver,并将parent设置为父对象。

注意事项: 将端口号设置为除默认(53)之外的任何值可能会导致名称解析失败,这取决于操作系统的限制和防火墙。值得注意的是,QDnsLookup使用的Windows API无法处理备用端口号。

此函数是在Qt 6.6中引入的。

[virtual noexcept] QDnsLookup::~QDnsLookup()

销毁QDnsLookup对象。

即使对象未完成,也可以安全地删除一个QDnsLookup对象,你将永远不会收到其结果。

[slot] void QDnsLookup::abort()

终止DNS查找操作。

如果查找已经完成,则不执行任何操作。

QList<QDnsDomainNameRecord> QDnsLookup::canonicalNameRecords() const

返回与此次查找相关的规范名称记录列表。

[signal] void QDnsLookup::finished()

当响应完成处理时发出此信号。

注意事项: 属性error的通知信号。属性errorString的通知信号。

QList<QDnsHostAddressRecord> QDnsLookup::hostAddressRecords() const

返回与此次查找相关的地址记录列表。

bool QDnsLookup::isFinished() const

返回响应是否已完成或被终止。

[slot] void QDnsLookup::lookup()

执行DNS查找。

完成时,将发出finished()信号。

QList<QDnsMailExchangeRecord> QDnsLookup::mailExchangeRecords() const

返回与此次查找相关的邮件交换记录列表。

记录根据RFC 5321排序,因此如果您使用它们连接到服务器,应按列表中显示的顺序尝试。

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

当查找name更改时发出此信号。 name是新的查找名称。

注意:属性 name 的通知信号。

QList<QDnsDomainNameRecord> QDnsLookup::nameServerRecords() const

返回与此次查找相关的名称服务器记录列表。

QList<QDnsDomainNameRecord> QDnsLookup::pointerRecords() const

返回与此次查找相关的指针记录列表。

QList<QDnsServiceRecord> QDnsLookup::serviceRecords() const

返回与此次查找相关的服务记录列表。

记录根据 RFC 2782 排序,因此如果你使用它们连接到服务器,你应该按照列出的顺序尝试它们。

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

将名称服务器设置为 nameserver 并将端口设置为 port

注意: 将端口号设置为除默认值(53)之外的任何值可能会导致名称解析失败,具体取决于操作系统的限制和防火墙。值得注意的是,QDnsLookup 所使用的 Windows API 无法处理备用端口号。

注意:属性 nameserver 的设置器函数。

此函数是在Qt 6.6中引入的。

另请参阅:QDnsLookup::nameserverQDnsLookup::nameserverPort

QList<QDnsTextRecord> QDnsLookup::textRecords() const

返回与此次查找相关的文本记录列表。

[信号] void QDnsLookup::typeChanged(QDnsLookup::Type type)

当查找 type 发生变化时,会发出此信号。 type 是新的查找类型。

注意:属性 type 的通知信号。

© 2024 Qt 公司。本文件中包含的文档贡献是各自拥有者的版权。本文件提供的相关文档是根据 GNU 自由文档许可证版本 1.3 许可的,该许可证由自由软件基金会出版。Qt 和相关标志是芬兰及/或全球其他国家的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。