System.Net.Dns 類別核心方法
GetHostName():取得本機主機名稱。
GetHostByName(string hostName):解析主機名稱回傳 IPHostEntry,包含 AddressList(IP 位址陣列)與 Aliases(別名)。
完整工具類別實作
using System; using System.Net;
namespace NKUtilities {
public class DNSUtility {
public static int Main(string[] args) {
string hostName = "";
if (args.Length == 0) {
hostName = Dns.GetHostName();
Console.WriteLine("Local Host Name: " + hostName);
} else hostName = args[0];
IPHostEntry entry = Dns.GetHostByName(hostName);
foreach (IPAddress ip in entry.AddressList)
Console.WriteLine("IP Address: " + ip.ToString());
return 0;
}
}
}
關鍵點說明
- 無參數呼叫
GetHostName() 取得本機名稱。
- 以該名稱呼叫
GetHostByName() 取得 IPHostEntry。
AddressList 可能包含多張網卡的 IPv4/IPv6 位址,需逐一列舉。
- 專案需參考
System.dll(含 System.Net 命名空間)。
現代化補充(.NET Core / .NET 5+)
// 非同步、支援 IPv6、跨平台
var hostName = Dns.GetHostName();
var entry = await Dns.GetHostEntryAsync(hostName);
foreach (var ip in entry.AddressList)
Console.WriteLine(ip);
GetHostByName 已標記過時,建議改用 GetHostEntryAsync。
Dns 類別現在在 System.Net.NameResolution 命名空間(.NET Core)。
常見應用場景
- 伺服器啟動時記錄綁定 IP。
- P2P 應用程式交換連線端點。
- 授權驗證綁定 MAC/IP(需配合 NetworkInterface 取得 MAC)。