QDnsLookup 类表示 DNS (域名系统) 查找。 更多...
头: | #include <QDnsLookup> |
CMake: |
find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
继承: | QObject |
enum | Error { NoError, ResolverError, OperationCancelledError, InvalidRequestError, InvalidReplyError, …, NotFoundError } |
enum | 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) | |
virtual | ~QDnsLookup () |
QBindable<QString> | bindableName () |
QBindable<QHostAddress> | bindableNameserver () |
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 |
QList<QDnsDomainNameRecord> | pointerRecords () const |
QList<QDnsServiceRecord> | serviceRecords () const |
void | setName (const QString & name ) |
void | setNameserver (const QHostAddress & nameserver ) |
void | setType (QDnsLookup::Type) |
QList<QDnsTextRecord> | textRecords () const |
QDnsLookup::Type | type () const |
void | abort () |
void | lookup () |
void | finished () |
void | nameChanged (const QString & name ) |
void | nameserverChanged (const QHostAddress & nameserver ) |
void | typeChanged (QDnsLookup::Type type ) |
QDnsLookup 使用由操作系统提供的机制来履行 DNS 查找。要履行查找需要指定 name and type 然后援引 lookup () slot. The finished () signal will be emitted upon completion.
例如,可以确定给定域的 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 代替。
指示在 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)。 |
指示所履行的 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
|
文本记录。 |
[read-only]
error
: const
Error
此特性保持出现错误的类型若 DNS 查找失败,或 NoError .
访问函数:
QDnsLookup::Error | error () const |
通知程序信号:
void | finished () |
[read-only]
errorString
: const
QString
此特性保持错误的人类可读描述,若 DNS 查找失败。
访问函数:
QString | errorString () const |
通知程序信号:
void | finished () |
[bindable]
name
:
QString
注意: 此特性支持 QProperty 绑定。
此特性保持要查找的名称。
注意: 名称将使用 IDNA 编码,这意味着它不适合查询兼容 DNS-SD 规范的 SRV 记录。
[bindable]
nameserver
:
QHostAddress
注意: 此特性支持 QProperty 绑定。
此特性保持用于 DNS 查找的名称服务器。
[bindable]
type
:
Type
注意: 此特性支持 QProperty 绑定。
此特性保持 DNS 查找的类型。
[explicit]
QDnsLookup::
QDnsLookup
(
QObject
*
parent
= nullptr)
构造 QDnsLookup 对象并设置 parent 作为父级对象。
The type 特性默认为 QDnsLookup::A .
构造 QDnsLookup 对象为给定 type and name 并设置 parent 作为父级对象。
构造 QDnsLookup 对象为给定 type , name and nameserver 并设置 parent 作为父级对象。
[虚拟]
QDnsLookup::
~QDnsLookup
()
销毁 QDnsLookup 对象。
它是安全的删除 QDnsLookup 对象即使它尚未完成,简而言之,也从不会收到其结果。
[slot]
void
QDnsLookup::
abort
()
中止 DNS 查找操作。
若查找已完成,什么都不做。
返回关联此查找的典型名称记录列表。
[signal]
void
QDnsLookup::
finished
()
此信号被发射,当回复已处理完成。
注意: 通知程序信号对于特性 error 。通知程序信号对于特性 errorString .
返回关联此查找的主机地址记录列表。
返回回复是已完成还是被中止。
[slot]
void
QDnsLookup::
lookup
()
履行 DNS 查找。
The finished () signal is emitted upon completion.
返回关联此查找的邮件交换记录列表。
记录的排序是根据 RFC 5321 ,因此,若使用它们连接到服务器,应按照列表它们的次序尝试。
[signal]
void
QDnsLookup::
nameChanged
(const
QString
&
name
)
此信号被发射当查找 name 改变。 name 是新的查找名称。
注意: 通知程序信号对于特性 name .
返回关联此查找的名称服务器记录列表。
返回关联此查找的指针记录列表。
返回关联此查找的服务记录列表。
记录的排序是根据 RFC 2782 ,因此,若使用它们连接到服务器,应按照列表它们的次序尝试。
返回关联此查找的文本记录列表。
[signal]
void
QDnsLookup::
typeChanged
(
QDnsLookup::Type
type
)
此信号被发射当查找 type 改变。 type 是新的查找类型。
注意: 通知程序信号对于特性 type .