Sử dụng lớp System.Net.Dns để lấy tên máy (hostname) và địa chỉ IP cục bộ.
Các bước
Dns.GetHostName(): Lấy tên máy tính.Dns.GetHostEntry(hostname): Lấy thông tin host (IPHostEntry).IPHostEntry.AddressList: Mảng các địa chỉ IP (IPv4, IPv6, loopback...).
Mã nguồn
using System;
using System.Net;
class Program {
static void Main() {
string hostName = Dns.GetHostName();
Console.WriteLine("Hostname: " + hostName);
IPHostEntry myIP = Dns.GetHostEntry(hostName);
IPAddress[] addresses = myIP.AddressList;
for (int i = 0; i < addresses.Length; i++) {
Console.WriteLine("Địa chỉ IP {0}: {1}", i + 1, addresses[i]);
}
Console.ReadLine();
}
}
Kết quả mẫu
Hostname: DESKTOP-ABC123
Địa chỉ IP 1: 192.168.1.5
Địa chỉ IP 2: fe80::1234:5678:9abc:def0
Địa chỉ IP 3: ::1
Địa chỉ IP 4: 127.0.0.1
Lọc chỉ IPv4
foreach (IPAddress ip in addresses) {
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) {
Console.WriteLine("IPv4: " + ip);
}
}
Lưu ý
- Kết quả bao gồm: IPv4 LAN, IPv6, Loopback (127.0.0.1, ::1), có thể có IPv4 ảo (VPN, Docker, Hyper-V).
Dns.GetHostEntrycó thể némSocketExceptionnếu DNS lỗi — nên wrap trong try-catch.- Để lấy IP public (ngoài internet), cần gọi API bên ngoài (vd:
https://api.ipify.org).