C#获取计算机名,IP,MAC信息实现代码


在C#中,获取计算机名、IP地址和MAC地址可以通过不同的方式实现。以下是一个简洁的示例代码,展示了如何分别获取这些信息:


using System;
using System.Net;
using System.Net.NetworkInformation;

class Program
{
    static void Main(string[] args)
    {
        // 获取计算机名
        string computerName = System.Net.Dns.GetHostName();
        Console.WriteLine($"计算机名: {computerName}");

        // 获取IP地址
        string ipAddress = string.Empty;
        foreach (var ip in Dns.GetHostEntry(computerName).AddressList)
        {
            if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) // IPv4
            {
                ipAddress = ip.ToString();
                break;
            }
        }
        Console.WriteLine($"IP地址: {ipAddress}");

        // 获取MAC地址
        string macAddress = string.Empty;
        NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
        foreach (NetworkInterface ni in networkInterfaces)
        {
            if (ni.OperationalStatus == OperationalStatus.Up)
            {
                PhysicalAddress pa = ni.GetPhysicalAddress();
                byte[] bytes = pa.GetAddressBytes();
                macAddress = BitConverter.ToString(bytes).Replace("-", ":");
                break; // 假设我们只需要第一个活动的网络接口
            }
        }
        Console.WriteLine($"MAC地址: {macAddress}");
    }
}

这段代码首先通过`System.Net.Dns.GetHostName()`获取计算机名。然后,它遍历`Dns.GetHostEntry(computerName).AddressList`来找到IPv4地址(这里假设我们只关心IPv4)。最后,它遍历所有网络接口以找到第一个活动的网络接口,并获取其MAC地址。

请注意,由于可能存在多个网络接口(例如,Wi-Fi、以太网等),并且每个接口都可能有自己的MAC地址,因此上述代码只获取了第一个活动的网络接口的MAC地址。如果你需要获取所有网络接口的MAC地址,你可以移除`break;`语句,并在循环中处理每个接口的MAC地址。