示例#1
0
        public void RefreshInfos()
        {
            listAdapter.Clear();

            adapters = NetworkInterface.GetAllNetworkInterfaces();

            foreach (NetworkInterface adapter in adapters)
            {
                var ipProp = adapter.GetIPProperties();

                foreach (UnicastIPAddressInformation ip in ipProp.UnicastAddresses)
                {
                    if ((adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet) &&
                        ip.Address.AddressFamily == AddressFamily.InterNetwork) //
                    {
                        IPInterfaceProperties   adapterProp        = adapter.GetIPProperties();
                        IPv4InterfaceProperties adapterPropV4      = adapterProp.GetIPv4Properties();
                        GatewayIPAddressInformationCollection gate = adapter.GetIPProperties().GatewayAddresses;

                        listAdapter.Add(new AdapterObject
                        {
                            Name                  = adapter.Name,
                            Description           = adapter.Description,
                            NetworkInterfaceType  = adapter.NetworkInterfaceType.ToString(),
                            PhysicalAddress       = adapter.GetPhysicalAddress().ToString(),
                            IsReceiveOnly         = adapter.IsReceiveOnly,
                            SupportMulticast      = adapter.SupportsMulticast,
                            IsOperationalStatusUp = adapter.OperationalStatus == OperationalStatus.Up,
                            Speed                 = adapter.Speed,

                            IpAddress  = ip.Address.ToString(),
                            SubnetMask = ip.IPv4Mask.ToString(),
                            Gateway    = gate.Any() ? gate.FirstOrDefault().Address.ToString() : "",

                            DnsSuffix           = adapterProp.DnsSuffix,
                            IsDnsEnabled        = adapterProp.IsDnsEnabled,
                            IsDynamicDnsEnabled = adapterProp.IsDynamicDnsEnabled,

                            Index = adapterPropV4.Index,
                            Mtu   = adapterPropV4.Mtu,
                            IsAutomaticPrivateAddressingActive  = adapterPropV4.IsAutomaticPrivateAddressingActive,
                            IsAutomaticPrivateAddressingEnabled = adapterPropV4.IsAutomaticPrivateAddressingEnabled,
                            IsForwardingEnabled = adapterPropV4.IsForwardingEnabled,
                            UsesWins            = adapterPropV4.UsesWins,
                            IsDHCPEnabled       = adapterPropV4.IsDhcpEnabled,

                            DHCPServer = adapterProp.DhcpServerAddresses.FirstOrDefault() != null ? adapterProp.DhcpServerAddresses.FirstOrDefault().ToString() : "",

                            DNSServer1 = (adapterProp.DnsAddresses.Count > 0 && adapterProp.DnsAddresses[0].AddressFamily == AddressFamily.InterNetwork) ? adapterProp.DnsAddresses[0]?.ToString() : "",
                            DNSServer2 = (adapterProp.DnsAddresses.Count > 1 && adapterProp.DnsAddresses[1].AddressFamily == AddressFamily.InterNetwork) ? adapterProp.DnsAddresses[1]?.ToString() : "",

                            Internet = adapter.GetIPv4Statistics().BytesReceived > 0 && adapter.GetIPv4Statistics().BytesSent > 0
                        });
                    }
                }
            }
        }
示例#2
0
        static IPAddress DefaultGatewayAddress(IPInterfaceProperties properties)
        {
            GatewayIPAddressInformationCollection addresses = properties.GatewayAddresses;
            IPAddress result = null;

            if (addresses.Any())
            {
                result = addresses.FirstOrDefault().Address;
            }
            return(result);
        }
示例#3
0
        /// <summary>
        /// 获取本机的Ip地址
        /// </summary>
        /// <returns></returns>
        public static string GetLocalIPAddress()
        {
            if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
            {
                return(string.Empty);
            }

            var withGetWayAddress = string.Empty;
            var localIpAddress    = new List <string>();

            foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
            {
                if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
                {
                    var ipProperties = ni.GetIPProperties();
                    foreach (UnicastIPAddressInformation ip in ipProperties.UnicastAddresses)
                    {
                        if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                        {
                            var ipStr = ip.Address.ToString();
                            if (string.IsNullOrEmpty(ipStr))
                            {
                                continue;
                            }
                            localIpAddress.Add(ipStr);
                            GatewayIPAddressInformationCollection gateways = ipProperties.GatewayAddresses;
                            var getway = gateways.FirstOrDefault();
                            if (getway != null && getway.Address != null)
                            {
                                var getwayAddress = getway.Address.ToString();
                                if (!string.IsNullOrEmpty(getwayAddress))
                                {
                                    withGetWayAddress = ipStr;
                                }
                            }
                        }
                    }
                }
            }

            //IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());

            //var ipaddress = host
            //    .AddressList
            //    .FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork);

            //if (ipaddress == null) return string.Empty;
            if (!string.IsNullOrEmpty(withGetWayAddress))
            {
                return(withGetWayAddress);
            }
            return(localIpAddress.FirstOrDefault());
        }