Kết hợp lấy tên máy (hostname) và danh sách địa chỉ IP (IPv4, IPv6, loopback) bằng namespace System.Net.
Mã nguồn
using System;
using System.Net;
class Program {
static void Main() {
// Lấy hostname
string hostName = Dns.GetHostName();
Console.WriteLine("Hostname: " + hostName);
// Lấy thông tin IP
IPHostEntry hostEntry = Dns.GetHostEntry(hostName);
IPAddress[] addresses = hostEntry.AddressList;
Console.WriteLine("Danh sách địa chỉ IP:");
for (int i = 0; i < addresses.Length; i++) {
Console.WriteLine($" IP {i + 1}: {addresses[i]} ({addresses[i].AddressFamily})");
}
Console.ReadLine();
}
}
Kết quả mẫu
Hostname: LAPTOP-ABC123
Danh sách địa chỉ IP:
IP 1: 192.168.1.10 (InterNetwork)
IP 2: fe80::1a2b:3c4d:5e6f:7890 (InterNetworkV6)
IP 3: ::1 (InterNetworkV6)
IP 4: 127.0.0.1 (InterNetwork)
Lọc chỉ IPv4 (InterNetwork)
foreach (IPAddress ip in addresses) {
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) {
Console.WriteLine("IPv4: " + ip);
}
}
Lấy IP Public (ngoài Internet)
IP local (192.168.x.x, 10.x.x.x) chỉ dùng trong LAN. Để lấy IP public:
using System.Net.Http;
static async Task GetPublicIpAsync() {
using var client = new HttpClient();
return await client.GetStringAsync("https://api.ipify.org");
}
Lưu ý
Dns.GetHostEntrycó thể némSocketException— nên dùng try-catch.- Kết quả phụ thuộc vào cấu hình mạng máy tính (có thể nhiều card mạng, VPN, Docker, WSL...).
AddressFamily.InterNetwork= IPv4,InterNetworkV6= IPv6.