在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地址。