一、描述
QDnsLookup 使用操作系统提供的机制来执行 DNS 查找。
注意:如果您只是想查找与主机名关联的 IP 地址,或与 IP 地址关联的主机名,则应改用 QHostInfo。
1.1、DNS服务
相比于用IP地址去访问网站,人们更愿意用域名。DNS协议提供提供域名查找IP地址或逆向从IP地址查找域名的服务。
二、类型成员
1、enum QDnsLookup::Error:指示在处理 DNS 查找过程中发现的所有可能的错误情况。
- NoError:没有错误。
- ResolverError:初始化系统的 DNS 解析器时出错。
- OperationCancelledError:使用 abort() 方法中止了查找。
- InvalidRequestError:请求的 DNS 查找无效。
- InvalidReplyError:服务器返回的回复无效。
- ServerFailureError:服务器在处理请求时遇到内部故障 (SERVFAIL)。
- ServerRefusedError:服务器出于安全或策略原因拒绝处理请求(REFUSED)。
- NotFoundError:请求的域名不存在 (NXDOMAIN)。
2、QDnsLookup::Type:指示执行的 DNS 查找的类型。
- A:IPv4 地址记录。
- AAAA:IPv6 地址记录。
- ANY:任何记录。
- CNAME:规范名称记录。
- MX:邮件交换记录。
- NS:名称服务器记录。
- PTR:指针记录。
- SRV:服务记录。
- TXT:文本记录。
三、成员函数
1、void abort()
中止 DNS 查找操作。如果查找已经完成,则什么都不做。
2、[signal] void finished()
查找完成时发出此信号。
3、void lookup()
执行 DNS 查找。
4、QList<QDnsDomainNameRecord> canonicalNameRecords()
返回与此查找关联的域名记录列表。
5、QList<QDnsHostAddressRecord> hostAddressRecords()
返回与此查找关联的主机地址记录列表。
6、QList<QDnsMailExchangeRecord> mailExchangeRecords()
返回与此查找关联的邮件交换记录列表。
7、QList<QDnsDomainNameRecord> nameServerRecords()
返回与此查找关联的名称服务器记录列表。
8、QList<QDnsDomainNameRecord> pointerRecords()
返回与此查找关联的指针记录列表。
9、QList<QDnsServiceRecord> serviceRecords()
返回与此查找关联的服务记录列表。
10、QList<QDnsTextRecord> textRecords()
返回与此查找关联的文本记录列表。
四、使用示例
QDnsLookup * dns = new QDnsLookup();
QDnsLookup::connect(dns, &QDnsLookup::finished,[dns]
{
qDebug()<<"finished";
if (dns->error() != QDnsLookup::NoError)
{
qWarning("DNS查找失败");
dns->deleteLater();
return;
}
foreach (auto &record , dns->hostAddressRecords())
{
qDebug()<<record.name()<<" "<<record.value();
}
dns->deleteLater();
});
dns->setType(QDnsLookup::A);
dns->setName("www.baidu.com");
dns->lookup();