使用.NET中的特定DNS服务器查询DNS

Phi*_*ert 9 .net dns

在.NET应用程序中,我需要查询特定的DNS服务器以解析域名(DNS服务器未在Windows网络配置中定义).

我知道使用标准的.NET Framework类是不可能的(参见另一个问题).我的问题是我的选择.CodePlex(DnDns)上有一个开源库可以做到这一点,但它在很长一段时间内没有更新,我的应用程序是关键任务,所以可靠性非常重要.

有什么建议?

arm*_*nvg 5

您还可以查看opendns.net并检查它是否适合您的应用程序

以下是一些示例代码,可帮助您入门:

        var query = new DnsQuery();

        query.Servers.Add("ns1.domainname.com");
        query.Servers.Add("ns2.domainname.com");
        query.Servers.Add("ns3.domainname.com");

        query.Domain = "domain.com";

        query.QueryType = Types.TXT;

        if (query.Send())
        {
            Console.WriteLine("TXT:");
            var response = query.Response;
            foreach (ResourceRecord answer in response.Answers)
            {
                Console.WriteLine(answer.RText);
            }
        }

        query.QueryType = OpenDNS.Types.MX;

        if (query.Send())
        {
            Console.WriteLine("MX:");
            var response = query.Response;
            foreach (MX answer in response.Answers)
            {
                Console.WriteLine("{0} {1}", answer.Preference, answer.Exchange);
            }
        }
Run Code Online (Sandbox Code Playgroud)


Mic*_*haC 5

虽然这是一个很老的问题。由于 .NET Framework 仍然不支持此操作,因此仍在开发新的库来执行此操作;)

看看http://dnsclient.michaco.net。它易于使用、高性能且开源

它也适用于 .NET Core 跨平台!


Hen*_*nri 0

我认为最好的选择是研究 DNS 协议(这很容易)并使用 .net udp 套接字自己实现它。

DNS 确实是一个易于理解和实施的协议。

此外,您可以使用 DnDNS 的源代码来查看程序/协议中的捕获