C#使用Dns類實(shí)現(xiàn)查詢主機(jī)名對(duì)應(yīng)IP地址
C#中使用Dns相關(guān)類查詢主機(jī)名對(duì)應(yīng)的IP地址等信息
C#中的Dns類能夠與默認(rèn)的DNS服務(wù)器進(jìn)行通信,以檢索IP地址。
下面的DnsLookup示例代碼使用了以下名稱空間:
- System
- System.Net
- System.Threading.Tasks
樣例應(yīng)用程序?qū)崿F(xiàn)一個(gè)控制臺(tái)程序(包),要求用戶輸入主機(jī)名(也可以添加一個(gè)IP地址),通過Dns.GetHostEntryAsync得到一個(gè)IPHostEntry。在IPHostEntry中,使用AddressList屬性訪問地址列表。
的所有地址以及AddressFamily都寫入控制臺(tái)。(代碼文件 DnsLookup/Program.cs):
using System; using System.Threading.Tasks; using System.Net; namespace DnsLookup { class Program { /// <summary> /// 樣例應(yīng)用程序?qū)崿F(xiàn)一個(gè)控制臺(tái)程序(包),要求用戶輸入主機(jī)名(也可以添加一個(gè)IP地址), /// 通過Dns.GetHostEntryAsync得到一個(gè)IPHostEntry。在IPHostEntry中,使用AddressList屬性訪問地址列表。 /// 主機(jī)的所有地址以及AddressFamily都寫入控制臺(tái)。 /// /// </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創(chuàng)建一個(gè)基于C#的控制臺(tái)應(yīng)用程序,運(yùn)行應(yīng)用程序,輸入幾個(gè)主機(jī)名,得到如下輸出:
對(duì)于主機(jī)名 www.orf.at, 可以看到這個(gè)主機(jī)名定義了多個(gè)IP地址。
注意:
Dns類是比較有限的,例如不能指定使用非默認(rèn)的DNS服務(wù)器。此外,IPHostEntry的Aliasess屬性不在GetHostEntryAsync方法中填充。它只在Dns類的過時(shí)方法中填充。而且這些方法也不完全地填充這個(gè)屬性。要充分利用DNS查找功能,最好使用第三方庫。
到此這篇關(guān)于C#使用Dns類實(shí)現(xiàn)查詢主機(jī)名對(duì)應(yīng)IP地址的文章就介紹到這了,更多相關(guān)C#查詢主機(jī)對(duì)應(yīng)IP地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決C#中Linq GroupBy 和OrderBy失效的方法
最近發(fā)現(xiàn)了一個(gè)問題,在服務(wù)器端的Linq GroupBy 和OrderBy居然不管用,后來終于解決了所以現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒。2016-09-09C#設(shè)計(jì)模式之Mediator中介者模式解決程序員的七夕緣分問題示例
這篇文章主要介紹了C#設(shè)計(jì)模式之Mediator中介者模式解決程序員的七夕緣分問題,簡單說明了中介者模式的定義并結(jié)合七夕緣分問題實(shí)例分析了中介者模式的具體使用技巧,需要的朋友可以參考下2017-09-09C#使用iTextSharp封裝的PDF文件操作類實(shí)例
這篇文章主要介紹了C#使用iTextSharp封裝的PDF文件操作類,實(shí)例分析了C#操作pdf文件的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03C#算法設(shè)計(jì)之關(guān)于1000瓶水的問題
這篇文章主要介紹了C#算法設(shè)計(jì)之關(guān)于1000瓶水的問題,是一個(gè)比較經(jīng)典的算法問題,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01Quartz.Net實(shí)現(xiàn)原理及使用方法詳解
這篇文章主要介紹了Quartz.Net實(shí)現(xiàn)原理及使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12c#使用正則表達(dá)式匹配字符串驗(yàn)證URL示例
這篇文章主要介紹了c#使用正則表達(dá)式的小示例,匹配字符串、驗(yàn)證URL,大家參考使用吧2013-12-12