LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#实用类库推荐:DnsClient

admin
2025年9月24日 8:6 本文热度 394

在日常 .NET 开发中,我们经常会遇到和 域名解析 相关的需求:

  • • 想要获取一个域名对应的 IP 地址
  • • 检查某个域名的邮件服务器(MX 记录)
  • • 验证域名所有权时需要读取 TXT 记录
  • • 甚至实现服务发现

虽然 .NET 自带的 System.Net.Dns 类能完成一些基础操作,但功能过于有限。今天要给大家推荐一个非常实用的 NuGet 包 —— DnsClient


🔎 什么是 DnsClient?

DnsClient.NET 是一个基于 .NET 的 高性能 DNS 协议客户端库,由社区开发者 MichaCo 维护。

它的优势:

  • • ✅ 跨平台(支持 .NET 5/6/7/8/9、.NET Framework)
  • • ✅ 支持异步 API,性能更优
  • • ✅ 覆盖 A、AAAA、MX、NS、CNAME、TXT、SRV 等多种记录类型
  • • ✅ 支持自定义 DNS 服务器(例如 Google DNS 8.8.8.8
  • • ✅ 使用简单,API 设计直观

安装命令非常简单:

dotnet add package DnsClient

🛠️ 基本用法

1. 查询 A 记录(域名对应的 IPv4 地址)

using DnsClient;

var lookup = new LookupClient();
var result = await lookup.QueryAsync("www.bing.com", QueryType.A);

foreach (var record in result.Answers.ARecords())
{
    Console.WriteLine($"IP 地址: {record.Address}");
}

👉 输出:

IP 地址: 202.89.233.101
IP 地址: 202.89.233.100

2. 查询 MX 记录(邮件服务器)

var lookup = new LookupClient();
var result = await lookup.QueryAsync("gmail.com", QueryType.MX);

foreach (var record in result.Answers.MxRecords())
{
    Console.WriteLine($"优先级: {record.Preference}, 邮件服务器: {record.Exchange}");
}

👉 输出:

优先级: 30, 邮件服务器: alt3.gmail-smtp-in.l.google.com.
优先级: 20, 邮件服务器: alt2.gmail-smtp-in.l.google.com.
优先级: 5, 邮件服务器: gmail-smtp-in.l.google.com.
优先级: 40, 邮件服务器: alt4.gmail-smtp-in.l.google.com.
优先级: 10, 邮件服务器: alt1.gmail-smtp-in.l.google.com.

3. 查询 TXT 记录(常见于域名验证)

var lookup = new LookupClient();
var result = await lookup.QueryAsync("netshare.com", QueryType.TXT);

foreach (var record in result.Answers.TxtRecords())
{
    Console.WriteLine($"TXT: {string.Join(", "record.Text)}");
}

👉 输出:

TXT: v=spf1 ip4:50.255.2.222 include:spf.protection.outlook.com include:netatlantic.com -all
TXT: MS=ms51378284

⚡ 高级用法:指定 DNS 服务器

有时候我们不想依赖系统的默认 DNS,可以手动指定:

using System.Net;
using DnsClient;

var client = new LookupClient(new NameServer(IPAddress.Parse("8.8.8.8")));
var result = await client.QueryAsync("microsoft.com", QueryType.AAAA);

foreach (var record in result.Answers.AaaaRecords())
{
    Console.WriteLine($"IPv6 地址: {record.Address}");
}

📌 应用场景

  • • 服务发现:通过 SRV 记录查找微服务地址
  • • 邮件系统开发:验证域名 MX 记录是否配置正确
  • • 域名验证:解析 TXT 记录,用于第三方平台验证域名所有权
  • • 诊断工具:快速写一个 nslookup 替代工具

最后

相较于 System.Net.DnsDnsClient 提供了更全面、更灵活的 DNS 查询能力。
如果你正在开发 网络工具、诊断平台,或者涉及到 邮件系统、微服务发现 的场景,DnsClient 都会是一个非常合适的选择。


阅读原文:原文链接


该文章在 2025/9/24 9:41:47 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved