前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#-输入主机名,使用Dns类解析出对应的IP地址信息

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

作者头像
ccf19881030
发布2020-06-22 15:49:52
10.8K0
发布2020-06-22 15:49:52
举报
文章被收录于专栏:ccf19881030的博客

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

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

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

在VS2017创建一个基于C#的控制台应用程序,运行应用程序,输入几个主机名,得到如下输出:

DNS
DNS

对于主机名 www.orf.at, 可以看到这个主机名定义了多个IP地址。

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C#中使用Dns相关类查询主机名对应的IP地址等信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档