C#使用Dns类实现查询主机名对应IP地址

 更新时间:2024年02月01日 11:20:24   作者:雪域迷影  
C#中的Dns类能够与默认的DNS服务器进行通信,以检索IP地址,这篇文章主要介绍了C#如何使用Dns类解析出主机对应的IP地址信息,需要的可以参考下

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

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

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

注意:

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

到此这篇关于C#使用Dns类实现查询主机名对应IP地址的文章就介绍到这了,更多相关C#查询主机对应IP地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# winfrom 模拟ftp文件管理实现代码

    C# winfrom 模拟ftp文件管理实现代码

    从网上找到的非常好用的模拟ftp管理代码,整理了一下,希望对需要的人有帮助
    2014-01-01
  • C# 通过反射获取类型的字段值及给字段赋值的操作

    C# 通过反射获取类型的字段值及给字段赋值的操作

    这篇文章主要介绍了C# 通过反射获取类型的字段值及给字段赋值的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C# 字符串多行显示/文本换行以textbox为例讲解

    C# 字符串多行显示/文本换行以textbox为例讲解

    C# 字符串多行显示、文本换行以textbox为例讲为大家详细介绍并附演示效果图及演示代码,感兴趣的朋友可以了解下,或许对你学习字符串换行有所帮助
    2013-02-02
  • 详解C#如何利用爬虫技术实现快捷租房

    详解C#如何利用爬虫技术实现快捷租房

    做为一个码农,大部分都集中在一二线城市,所以租房也就无可避免,面对如今五花八门的租房信息,往往很难找到合适的房子。本文教你如何利用爬虫技术实现快捷租房,感兴趣的可以了解一下
    2022-09-09
  • Unity中 mesh生成斜坡的示例代码

    Unity中 mesh生成斜坡的示例代码

    Mesh是指模型的网格,3D模型是由多边形拼接而成,而多边形实际上是由多个三角形拼接而成的,今天通过本文给大家介绍Unity中 mesh生成斜坡功能,感兴趣的朋友一起看看吧
    2021-05-05
  • C#中List转IList的实现

    C#中List转IList的实现

    本文主要介绍了C#中List转IList的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • c#实现爬虫程序

    c#实现爬虫程序

    这篇文章介绍了c#实现爬虫程序的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C# WebService发布以及IIS发布

    C# WebService发布以及IIS发布

    这篇文章主要介绍了C# WebService发布以及IIS发布的相关资料,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 解决C#调用dll提示

    解决C#调用dll提示

    下面小编就为大家分享一篇解决C#调用dll提示"试图加载格式不正确的程序"问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • C#面向对象编程中接口隔离原则的示例详解

    C#面向对象编程中接口隔离原则的示例详解

    在面向对象编程中,SOLID 是五个设计原则的首字母缩写,旨在使软件设计更易于理解、灵活和可维护。本文将通过实例详细讲讲C#面向对象编程中接口隔离原则,需要的可以参考一下
    2022-07-07

最新评论