1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C#获取电脑IP MAC地址示例代码

C#获取电脑IP MAC地址示例代码

时间:2023-04-01 18:06:09

相关推荐

C#获取电脑IP MAC地址示例代码

/// <summary>

/// 使用 C# 自带的类库实现计算机信息获取

/// </summary>

public class DefaultDeviceInfo

{

public virtual string GetCpuId()

{

try

{

string cpuInfo = " ";

ManagementClass cimobject = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = cimobject.GetInstances();

foreach (ManagementObject mo in moc)

{

cpuInfo = mo.Properties["ProcessorId"].Value.ToString();

}

return cpuInfo.ToString();

}

catch (Exception)

{

}

return string.Empty;

}

public virtual string GetHDid()

{

try

{

string HDid = " ";

ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");

ManagementObjectCollection moc1 = cimobject1.GetInstances();

foreach (ManagementObject mo in moc1)

{

HDid = (string)mo.Properties["Model"].Value;

}

return HDid.ToString();

}

catch (Exception)

{

}

return string.Empty;

}

public virtual string GetIpv4()

{

string ip = GetIpv4("127.0.0.1");

//如果根据127.0.0.1无法获取ip地址,则尝试根据主机名获取

if (ip == IPAddress.None.ToString())

{

ip = GetIpv4(null);

}

return ip;

}

public virtual string GetMac()

{

try

{

List<string> macs = new List<string>();

NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

foreach (NetworkInterface ni in interfaces)

{

if (workInterfaceType != NetworkInterfaceType.Ethernet)

{

continue;

}

if (ni.GetPhysicalAddress().ToString() != "")

{

macs.Add(ni.GetPhysicalAddress().ToString());

}

}

//替补mac地址,当找不到以太网mac,则使用第一个mac

var subs = macs.Count == 0 && interfaces.Length > 0

? interfaces[0].GetPhysicalAddress().ToString()

: string.Empty;

return macs.Count > 0 ? macs[0] : subs;

}

catch (Exception)

{

}

return string.Empty;

}

public virtual string GetHostName()

{

return Dns.GetHostName();

}

#region 内部方法

/// <summary>

/// 字符串每隔多少位插入特定字符

/// </summary>

/// <param name="value"></param>

/// <param name="separator"></param>

/// <param name="separatorLen"></param>

/// <returns></returns>

protected static string StringInsertSeparator(string value, string separator, int separatorLen = 1)

{

if (string.IsNullOrWhiteSpace(value))

{

return value;

}

StringBuilder sbNewValue = new StringBuilder();

for (int i = 0; i < value.ToArray().Count(); i++)

{

if (i > 0 && i % separatorLen == 0)

{

sbNewValue.Append(separator);

}

sbNewValue.Append(value[i]);

}

return sbNewValue.ToString();

}

/// <summary>

/// 根据指定的主机名获取ip地址

/// 如果主机名为空,则获取系统主机名称

/// </summary>

/// <param name="defHostName"></param>

/// <returns></returns>

protected string GetIpv4(string defHostName)

{

try

{

/* NetworkInterface 实现方法

// 获得网络接口,网卡,拨号器,适配器都会有一个网络接口

NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();

foreach (NetworkInterface network in networkInterfaces)

{

if (workInterfaceType != NetworkInterfaceType.Ethernet)

{

continue;

}

// 获得当前网络接口属性

IPInterfaceProperties properties = network.GetIPProperties();

// 每个网络接口可能会有多个IP地址

foreach (IPAddressInformation address in properties.UnicastAddresses)

{

// 如果此IP不是ipv4,则进行下一次循环

if (address.Address.AddressFamily != AddressFamily.InterNetwork)

{

continue;

}

// 忽略127.0.0.1

if (IPAddress.IsLoopback(address.Address))

{

continue;

}

return address.Address.ToString();

}

}

*/

string hostName = defHostName;

if (string.IsNullOrWhiteSpace(hostName))

{

hostName = Dns.GetHostName();

}

var ipList = Dns.GetHostEntry(hostName).AddressList;

foreach (var address in ipList)

{

// 如果此IP不是ipv4,则进行下一次循环

if (address.AddressFamily != AddressFamily.InterNetwork)

{

continue;

}

// 忽略127.0.0.1

if (IPAddress.IsLoopback(address))

{

continue;

}

return address.ToString();

}

}

catch (Exception ex)

{

}

return IPAddress.None.ToString(); //255.255.255.255

}

#endregion

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。