ใช้ Dns.GetHostEntry() และ IPHostEntry.AddressList Property
โค้ดตัวอย่าง
using System;
using System.Net;
class Program
{
static void Main()
{
string hostName = Dns.GetHostName();
Console.WriteLine("Hostname: " + hostName);
IPHostEntry hostEntry = Dns.GetHostEntry(hostName);
IPAddress[] addresses = hostEntry.AddressList;
Console.WriteLine("IP Addresses:");
for (int i = 0; i < addresses.Length; i++)
{
Console.WriteLine($" [{i}] {addresses[i]} ({addresses[i].AddressFamily})");
}
Console.ReadLine();
}
}
ผลลัพธ์ตัวอย่าง
Hostname: MY-PC IP Addresses: [0] ::1 (InterNetworkV6) // IPv6 Loopback [1] 192.168.1.100 (InterNetwork) // IPv4 [2] fe80::... (InterNetworkV6) // IPv6 Link-local
กรองเฉพาะ IPv4
var ipv4Addresses = addresses
.Where(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork);
foreach (var ip in ipv4Addresses)
Console.WriteLine("IPv4: " + ip);
หมายเหตุ
- อาจได้หลาย IP (Loopback, IPv4, IPv6, Virtual Adapters)
- ต้อง Import
System.NetและSystem.Net.Sockets - ใน .NET Core/5+ อาจต้อง Handle Exception สำหรับ DNS Lookup