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 }); } } } }
static IPAddress DefaultGatewayAddress(IPInterfaceProperties properties) { GatewayIPAddressInformationCollection addresses = properties.GatewayAddresses; IPAddress result = null; if (addresses.Any()) { result = addresses.FirstOrDefault().Address; } return(result); }
/// <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()); }