The QDnsLookup class represents a DNS lookup. 更多...
| 頭: | #include <QDnsLookup> |
| qmake: | QT += network |
| Since: | Qt 5.0 |
| 繼承: | QObject |
| enum | Error { NoError, ResolverError, OperationCancelledError, InvalidRequestError, ..., NotFoundError } |
| enum | Type { A, AAAA, ANY, CNAME, ..., 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 () |
| 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 ) |
| const QMetaObject | staticMetaObject |
The QDnsLookup class represents a DNS lookup.
QDnsLookup uses the mechanisms provided by the operating system to perform DNS lookups. To perform a lookup you need to specify a name and type 然後援引 lookup() 槽。 finished() 信號會被發射當完成時。
例如,可以確定給定域的 XMPP 聊天客戶端應該連接到哪些服務器采用:
void MyObject::lookupServers() { // Create a DNS lookup. dns = new QDnsLookup(this); connect(dns, SIGNAL(finished()), this, SLOT(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
|
文本記錄。 |
此特性保持齣現錯誤的類型若 DNS 查找失敗,或 NoError .
訪問函數:
| QDnsLookup::Error | error () const |
通知程序信號:
| void | finished () |
此特性保持錯誤的人類可讀描述,若 DNS 查找失敗。
訪問函數:
| QString | errorString () const |
通知程序信號:
| void | finished () |
此特性保持要查找的名稱。
注意: 名稱將使用 IDNA 編碼,這意味著它不適閤查詢兼容 DNS-SD 規範的 SRV 記錄。
訪問函數:
| QString | name () const |
| void | setName (const QString & name ) |
通知程序信號:
| void | nameChanged (const QString & name ) |
此特性保持用於 DNS 查找的名稱服務器。
訪問函數:
| QHostAddress | nameserver () const |
| void | setNameserver (const QHostAddress & nameserver ) |
通知程序信號:
| void | nameserverChanged (const QHostAddress & nameserver ) |
此特性保持 DNS 查找的類型。
訪問函數:
| QDnsLookup::Type | type () const |
| void | setType ( QDnsLookup::Type ) |
通知程序信號:
| void | typeChanged (QDnsLookup::Type type ) |
構造 QDnsLookup object and sets parent 作為父級對象。
The type 特性默認為 QDnsLookup::A .
構造 QDnsLookup 對象為給定 type and name 並設置 parent 作為父級對象。
構造 QDnsLookup 對象為給定 type , name and nameserver 並設置 parent 作為父級對象。
該函數在 Qt 5.4 引入。
[虛擬]
QDnsLookup::
~QDnsLookup
()
銷毀 QDnsLookup 對象。
它是安全的刪除 QDnsLookup 對象即使它尚未完成,簡而言之,也從不會收到其結果。
[slot]
void
QDnsLookup::
abort
()
中止 DNS 查找操作。
若查找已完成,什麼都不做。
返迴關聯此查找的典型名稱記錄列錶。
[signal]
void
QDnsLookup::
finished
()
此信號被發射,當迴復已處理完成。
注意: 通知程序信號對於特性 error 。通知程序信號對於特性 errorString .
返迴關聯此查找的主機地址記錄列錶。
返迴迴復是已完成還是被中止。
[slot]
void
QDnsLookup::
lookup
()
履行 DNS 查找。
The finished() 信號被發射當完成時。
返迴關聯此查找的郵件交換記錄列錶。
記錄的排序是根據 RFC 5321 ,因此,若使用它們連接到服務器,應按照列錶它們的次序嘗試。
[signal]
void
QDnsLookup::
nameChanged
(const
QString
&
name
)
此信號發射,當查找 name 改變。 name 是新的查找名稱。
注意: 通知程序信號對於特性 name .
返迴關聯此查找的名稱服務器記錄列錶。
返迴關聯此查找的指針記錄列錶。
返迴關聯此查找的服務記錄列錶。
記錄的排序是根據 RFC 2782 ,因此,若使用它們連接到服務器,應按照列錶它們的次序嘗試。
返迴關聯此查找的文本記錄列錶。
[signal]
void
QDnsLookup::
typeChanged
(
QDnsLookup::Type
type
)
此信號發射,當查找 type 改變。 type 是新的查找類型。
注意: 通知程序信號對於特性 type .