C#使用Dns类实现查询主机名对应IP地址
作者:雪域迷影
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地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!