Example #1
0
            public void LoadIpConfigInformation()
            {
                _m_AdapterInformationList        = null;
                _m_CurrentAdapterInformationList = null;
                CAdapterInformationList.count    = 0;

                //清理链表

                /*
                 * while(_m_AdapterInformationList != null)
                 * {
                 *  _m_CurrentAdapterInformationList = m_AdapterInformationList;
                 *  _m_AdapterInformationList = _m_AdapterInformationList.m_NextAdapter;
                 *
                 * }*/
                //获取所有网络接口放在adapters中。
                System.Net.NetworkInformation.NetworkInterface[] adapters = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
                foreach (System.Net.NetworkInformation.NetworkInterface adapter in adapters)
                {
                    //未启用的网络接口不要
                    if (adapter.OperationalStatus != System.Net.NetworkInformation.OperationalStatus.Up)
                    {
                        continue;
                    }

                    //不是以太网和无线网的网络接口不要
                    if (adapter.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.Ethernet &&
                        adapter.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.Wireless80211 &&
                        adapter.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.Ppp)
                    {
                        continue;
                    }

                    //虚拟机的网络接口不要
                    if (adapter.Name.IndexOf("VMware") != -1 || adapter.Name.IndexOf("Virtual") != -1)
                    {
                        continue;
                    }

                    CAdapterInformationList currentAdapter = new CAdapterInformationList();
                    //获取适配器名称
                    currentAdapter.m_AdapterInformation.m_Name = adapter.Name;
                    //获取物理地址字节
                    byte[] physicalAddress = adapter.GetPhysicalAddress().GetAddressBytes();
                    if (physicalAddress.Length == 0 || physicalAddress.Length != 6)
                    {
                        currentAdapter.m_AdapterInformation.m_Physical = "";
                    }
                    else
                    {
                        try
                        {
                            currentAdapter.m_AdapterInformation.m_Physical = String.Format("{0:x2}:{1:x2}:{2:x2}:{3:x2}:{4:x2}:{5:x2}",
                                                                                           physicalAddress[0],
                                                                                           physicalAddress[1],
                                                                                           physicalAddress[2],
                                                                                           physicalAddress[3],
                                                                                           physicalAddress[4],
                                                                                           physicalAddress[5]).ToUpper();
                        }
                        catch (System.Exception)
                        {
                        }
                    }
                    //获取IP地址和Mask地址
                    System.Net.NetworkInformation.IPInterfaceProperties ipif = adapter.GetIPProperties();
                    System.Net.NetworkInformation.UnicastIPAddressInformationCollection ipifCollection = ipif.UnicastAddresses;

                    foreach (System.Net.NetworkInformation.UnicastIPAddressInformation ipInformation in ipifCollection)
                    {
                        if (ipInformation.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                        {
                            currentAdapter.m_AdapterInformation.m_IP   = ipInformation.Address.ToString();
                            currentAdapter.m_AdapterInformation.m_Mask = ipInformation.IPv4Mask.ToString();
                        }
                    }

                    //获取网关地址,网关一般只有一个
                    if (ipif.GatewayAddresses != null && ipif.GatewayAddresses.Count != 0)
                    {
                        currentAdapter.m_AdapterInformation.m_Gateway = ((System.Net.NetworkInformation.GatewayIPAddressInformation)(ipif.GatewayAddresses[0])).Address.ToString();
                    }

                    /*
                     * foreach (System.Net.NetworkInformation.GatewayIPAddressInformation gwInformation in ipif.GatewayAddresses)
                     * {
                     *  _m_Gateway = gwInformation.Address.ToString();
                     * }
                     */

                    //获取DNS地址,DNS地址一般是两个,有可能没有或一个,或超过两个的情况
                    //如果超过两个只取前两个
                    StringBuilder dnsStr = new StringBuilder(30);
                    foreach (System.Net.IPAddress dnsInformation in ipif.DnsAddresses)
                    {
                        dnsStr.Append(dnsInformation.ToString());
                        dnsStr.Append(',');
                    }
                    dnsStr.Remove(dnsStr.Length - 1, 1);
                    string[] dnsArr = dnsStr.ToString().Split(',');
                    #region switch折叠
                    switch (dnsArr.Length)
                    {
                    case 0:
                    {
                        currentAdapter.m_AdapterInformation.m_Dns1 = "";
                        currentAdapter.m_AdapterInformation.m_Dns2 = "";
                        break;
                    }

                    case 1:
                    {
                        currentAdapter.m_AdapterInformation.m_Dns1 = dnsArr[0];
                        currentAdapter.m_AdapterInformation.m_Dns2 = "";
                        break;
                    }

                    case 2:
                    {
                        currentAdapter.m_AdapterInformation.m_Dns1 = dnsArr[0];
                        currentAdapter.m_AdapterInformation.m_Dns2 = dnsArr[1];
                        break;
                    }

                    default:
                    {
                        currentAdapter.m_AdapterInformation.m_Dns1 = dnsArr[0];
                        currentAdapter.m_AdapterInformation.m_Dns2 = dnsArr[1];
                        break;
                    }
                    }

                    if (_m_AdapterInformationList == null)
                    {
                        _m_AdapterInformationList = currentAdapter;
                        ++CAdapterInformationList.count;
                        //_m_AdapterInformationList.CAdapterInformationList = null;
                        _m_AdapterInformationList.m_NextAdapter = null;
                        _m_CurrentAdapterInformationList        = _m_AdapterInformationList;
                    }
                    else
                    {
                        _m_CurrentAdapterInformationList.m_NextAdapter = currentAdapter;
                        ++CAdapterInformationList.count;
                        _m_CurrentAdapterInformationList = currentAdapter;
                    }

                    #endregion
                }
            }
Example #2
0
 public CIpInformation()
 {
     _m_AdapterInformationList        = null;
     _m_CurrentAdapterInformationList = null;
     LoadIpConfigInformation();
 }