当前位置:   article > 正文

C#-输入主机名,使用Dns类解析出对应的IP地址信息_c#解析dns

c#解析dns

C#中使用Dns相关类查询主机名对应的IP地址等信息

C#中的Dns类能够与默认的DNS服务器进行通信,以检索IP地址。
下面的DnsLookup示例代码使用了以下名称空间:

  • System
  • System.Net
  • System.Threading.Tasks
    样例应用程序实现一个控制台程序(包),要求用户输入主机名(也可以添加一个IP地址),
    通过Dns.GetHostEntryAsync得到一个IPHostEntry。在IPHostEntry中,使用AddressList属性访问地址列表。
    主机的所有地址以及AddressFamily都写入控制台。(代码文件 DnsLookup/Program.cs):
using System;
using System.Threading.Tasks;
using System.Net;

namespace DnsLookup
{
    class Program
    {
        /// <summary>
        /// 样例应用程序实现一个控制台程序(包),要求用户输入主机名(也可以添加一个IP地址),
        /// 通过Dns.GetHostEntryAsync得到一个IPHostEntry。在IPHostEntry中,使用AddressList属性访问地址列表。
        /// 主机的所有地址以及AddressFamily都写入控制台。
        /// 
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        static async Task Main(string[] args)
        {
            do
            {
                Console.Write("Hostname:\t");
                string hostname = Console.ReadLine();
                if (hostname.CompareTo("exit") == 0)
                {
                    Console.WriteLine("bye!");
                    return;
                }
                await OnLookupAsync(hostname);
                Console.WriteLine();
            } while (true);
        }

        public static async Task OnLookupAsync(string hostname)
        {
            try
            {
                IPHostEntry ipHost = await Dns.GetHostEntryAsync(hostname);
                Console.WriteLine($"Hostname: {ipHost.HostName}");
                foreach (IPAddress address in ipHost.AddressList)
                {
                    Console.WriteLine($"Address Family: {address.AddressFamily}");
                    Console.WriteLine($"Address: {address}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

在VS2017创建一个基于C#的控制台应用程序,运行应用程序,输入几个主机名,得到如下输出:
DNS
对于主机名 www.orf.at, 可以看到这个主机名定义了多个IP地址。

注意:
Dns类是比较有限的,例如不能指定使用非默认的DNS服务器。此外,IPHostEntry的Aliasess属性不在GetHostEntryAsync方法中填充。它只在Dns类的过时方法中填充。而且这些方法也不完全地填充这个属性。要充分利用DNS查找功能,最好使用第三方库。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/45118?site
推荐阅读
相关标签
  

闽ICP备14008679号