QDnsLookup 类
QDnsLookup 类表示 DNS 查找。 更多...
头文件 | #include <QDnsLookup> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake | QT += network |
继承 | QObject |
- 所有成员的列表,包括继承的成员
- QDnsLookup 是网络编程 API 的一部分。网络编程 API。
公共类型
枚举 | 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::Error | error() const |
QString | errorString() const |
QList<QDnsHostAddressRecord> | hostAddressRecords() const |
bool | isFinished() const |
QList<QDnsMailExchangeRecord> | mailExchangeRecords() const |
QString | name() const |
QList<QDnsDomainNameRecord> | nameServerRecords() const |
QHostAddress | nameserver() const |
quint16 | nameserverPort() const |
QList<QDnsDomainNameRecord> | 指针记录() const |
QList<QDnsServiceRecord> | 服务记录() const |
void | setName(const QString &name) |
void | setNameserver(const QHostAddress &nameserver) |
(自6.6版本起) void | setNameserver(const QHostAddress &nameserver, quint16 port) |
void | setNameserverPort(quint16 port) |
void | setType(QDnsLookup::Type) |
QList<QDnsTextRecord> | 文本记录() const |
QDnsLookup::Type | type() const |
公共槽
信号
void | 完成() |
void | nameChanged(const QString &name) |
void | nameserverChanged(const QHostAddress &nameserver) |
void | nameserverPortChanged(quint16 port) |
void | typeChanged(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::NoError | 0 | 无错误条件。 |
QDnsLookup::ResolverError | 1 | 初始化系统DNS解析器时出错。 |
QDnsLookup::OperationCancelledError | 2 | 使用abort()方法终止查找。 |
QDnsLookup::InvalidRequestError | 3 | 请求的DNS查找无效。 |
QDnsLookup::InvalidReplyError | 4 | 服务器返回的响应无效。 |
QDnsLookup::ServerFailureError | 5 | 在处理请求时服务器遇到了内部错误(SERVFAIL)。 |
QDnsLookup::ServerRefusedError | 6 | 由于安全或策略原因,服务器拒绝处理请求(REFUSED)。 |
QDnsLookup::NotFoundError | 7 | 请求的域名不存在(NXDOMAIN)。 |
QDnsLookup::TimeoutError | 8 | 未达到服务器或服务器未及时回复(自6.6版本起)。 |
枚举QDnsLookup::Type
指示执行了DNS查找的类型。
常量 | 值 | 描述 |
---|---|---|
QDnsLookup::A | 1 | IPv4地址记录。 |
QDnsLookup::AAAA | 28 | IPv6地址记录。 |
QDnsLookup::ANY | 255 | 任何记录。 |
QDnsLookup::CNAME | 5 | 规范名称记录。 |
QDnsLookup::MX | 15 | 邮件交换记录。 |
QDnsLookup::NS | 2 | 名称服务器记录。 |
QDnsLookup::PTR | 12 | 指针记录。 |
QDnsLookup::SRV | 33 | 服务记录。 |
QDnsLookup::TXT | 16 | 文本记录。 |
属性文档
[只读]
error : const Error
如果 DNS 查找失败,则此属性持有发生的错误类型,或NoError。
访问函数
QDnsLookup::Error | error() const |
通知信号
void | 完成() |
[只读]
errorString : const QString
如果 DNS 查找失败,则此属性持有对错误的文本描述。
访问函数
QString | errorString() 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)
构造一个用于给定 type 和 name 的 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::nameserver 和 QDnsLookup::nameserverPort。
QList<QDnsTextRecord> QDnsLookup::textRecords() const
返回与此次查找相关的文本记录列表。
[信号]
void QDnsLookup::typeChanged(QDnsLookup::Type type)
当查找 type 发生变化时,会发出此信号。 type 是新的查找类型。
注意:属性 type 的通知信号。
© 2024 Qt 公司。本文件中包含的文档贡献是各自拥有者的版权。本文件提供的相关文档是根据 GNU 自由文档许可证版本 1.3 许可的,该许可证由自由软件基金会出版。Qt 和相关标志是芬兰及/或全球其他国家的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。