Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Chương trình C# hiển thị Hostname và địa chỉ IP

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.GetHostEntry có thể ném SocketException — 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.