Qt网络编程:DNS查找

QDnsLookup是Qt库中用于执行DNS查找的工具,它利用操作系统内置机制进行域名到IP地址或反之的转换。本文详细介绍了QDnsLookup的错误类型、DNS查询类型以及成员函数,提供了示例代码展示如何查找并获取域名的IP地址。通过QDnsLookup,开发者可以方便地实现跨平台的DNS解析功能。
摘要由CSDN通过智能技术生成

一、描述

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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值