C#中的Dns类能够与默认的DNS服务器进行通信,以检索IP地址。 下面的DnsLookup示例代码使用了以下名称空间:
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查找功能,最好使用第三方库。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有