zoukankan      html  css  js  c++  java
  • C#获取电脑IP、MAC地址示例代码


        

    640?wx_fmt=png

        /// <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 (ni.NetworkInterfaceType != 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 (network.NetworkInterfaceType != 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


        }


  • 相关阅读:
    波特率原理【转】
    求助大神!怎样批量删除数据库表中某个字段中同样的一段字符!
    1033. To Fill or Not to Fill (25)
    http协议
    【数据结构与算法】二叉树深度遍历(递归)
    2015届求职经历
    Codeforces Round #245 (Div. 1)——Working out
    泛泰A900 刷4.4专用中文TWRP2.7.1.1版 支持自己主动识别手机版本号(全球首创)
    实现简答LinkedList
    oracle的内存管理(之中的一个)
  • 原文地址:https://www.cnblogs.com/hgmyz/p/12351380.html
Copyright © 2011-2022 走看看