C#中如何得到機器的IP地址
如何使用DNS類並得到機器的IP地址的技巧
介紹
這篇文章並不是技術縱覽或大型討論,而更像是關於如何得到IP地址或主機名稱的技巧集錦。在 Win32 API編程中你可以使用NetWork API,在.NET平台中也是類似的。唯一的不同之處是你要找到並理解為完成這個任務需要什麼名稱空間(namespace)和類。在.NET平台中NetWork API存在於System.Net名稱空間中。System.Net名稱空間中的DNS類可以用來得到機器名稱和IP地址。 DNS類提供類簡單的域名解釋函數。DNS 類為處理Internet域名(DNS)信息提供支持.這些返回的信息包括多重的IP地址和主機別名。返回的列表是一個集合或IPAddress對象數組。以下代碼顯示了如何通過給定的主機名稱得到IP地址。
DNSUtility代碼
namespace NKUtilitIEs
{
using System;
using System.Net;
public class DNSUtility
{
public static int Main (string [] args)
{
String strHostName = new String ("");
if (args.Length == 0)
{
// 首先得到本地機器的主機名稱
strHostName = DNS.GetHostName ();
Console.WriteLine ("Local Machine's Host Name: " + strHostName);
}
else
{
strHostName = args[0];
}
// 然後通過主機名稱得到IP地址列表
IPHostEntry ipEntry = DNS.GetHostByName (strHostName);
IPAddress [] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
Console.WriteLine ("IP Address {0}: {1} ", i, addr[i].ToString ());
}
return 0;
}
}
}
代碼的解釋
如果想得到本地機器的主機名,你可以不加參數調用GetHostName方法。然後你可以用返回的結果作為參數調用GetHostByName方法得到IPAddresses列表,然後遍歷addresses集合得到主機的IP地址。
提示
確認在你的代碼中已經包含了System.Net名稱空間,否則編譯器將不知道如何找到DNS類。同樣,當你使用VisualStudio.NET創建工程的時候,要確認你的系統已經包含System.NET.Dll。關於DNS類和System.Net名稱空間的更詳細的信息請參考.Net SDK在線文檔。