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

Chương trình C# tìm địa chỉ IP của client

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

  1. Dns.GetHostName(): Lấy tên máy tính.
  2. Dns.GetHostEntry(hostname): Lấy thông tin host (IPHostEntry).
  3. 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.GetHostEntry có thể ném SocketException nế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).