时间:2021-05-20
1.第一种方式
采用System.Net.Dns的GetHostAddress的方式,具体请看代码:
/// <summary> /// 网络不通畅可以获取 /// 不过能获取到具体的IP /// </summary> /// <returns></returns> public static List<IPAddress> GetByGetHostAddresses() { try { IPAddress[] adds = Dns.GetHostAddresses(Dns.GetHostName()); return adds == null || adds.Length == 0 ? new List<IPAddress>() : adds.ToList<IPAddress>(); } catch (Exception) { return new List<IPAddress>(); } }这种方式受到网络的影响,如果没有连接到网络,本地配置的部分IP是获取不到的,我也遇到一种情况是,电脑环境正常,就是获取不到,原因至今还不知道;
2.第二种方式
采用System.Management.ManagementClass来获取,详细请看代码:
/// <summary> /// 只有网络通畅才能获取 /// </summary> /// <returns></returns> public static List<IPAddress> GetByManagementClass() { try { ManagementClass mClass = new System.Management.ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection managementObjectCollection = mClass.GetInstances(); List<IPAddress> ls = new List<IPAddress>(); foreach (var item in managementObjectCollection) { if ((bool)item["IPEnabled"] == true) { foreach (var ip in (string[])item["IPAddress"]) { IPAddress ipout = null; IPAddress.TryParse(ip, out ipout); if (ipout != null) { ls.Add(ipout); } } } } return ls; } catch (Exception) { return new List<IPAddress>(); } }同样的这种方式也受到网络的约束,没有联网的状态下不一定能够获取到IP;
3.第三种方式
我们平时在命令行中输入ipconfig命令同样也是能获取,在程序中启动Ipconfig应用程序,然后解析出来,也是可以获取得到IP,详细请看代码:
public static List<IPAddress> GetByCMD() { try { Process cmd = new Process(); cmd.StartInfo.FileName = "ipconfig.exe"; cmd.StartInfo.Arguments = "/all"; cmd.StartInfo.RedirectStandardOutput = true; cmd.StartInfo.RedirectStandardInput = true; cmd.StartInfo.UseShellExecute = false; cmd.StartInfo.CreateNoWindow = true; cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; cmd.Start(); string info = ""; List<IPAddress> ls = new List<IPAddress>(); // info = cmd.StandardOutput.ReadToEnd(); Regex validipregex = new Regex(@"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}"); //new Regex(@"^(([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"); while ((info = cmd.StandardOutput.ReadLine()) != null) { IPAddress ip = null; Console.WriteLine(info); info = validipregex.Match(info).Value; IPAddress.TryParse(info, out ip); if (ip != null) { ls.Add(ip); } } cmd.WaitForExit(); cmd.Close(); return ls; } catch (Exception) { return new List<IPAddress>(); } }即便是通过这种方式来获取IP,如果在本机电脑没有联网的状态下,也是获取不到IP的,并且也不太建议使用这种方式;
4.第四种方法
采用NetworkInterface.GetAllNetworkInterfaces的方式是不受网络的影响的,联网或者不联网都能够获取到IP,详细请看代码:
/// <summary> /// 无论网络通不通都能获取到Ip /// </summary> /// <returns></returns> public static List<IPAddress> GetByNetworkInterface() { try { NetworkInterface[] intf = NetworkInterface.GetAllNetworkInterfaces(); List<IPAddress> ls = new List<IPAddress>(); foreach (var item in intf) { IPInterfaceProperties adapterPropertis = item.GetIPProperties(); UnicastIPAddressInformationCollection coll = adapterPropertis.UnicastAddresses; foreach (var col in coll) { ls.Add(col.Address); } } return ls; } catch (Exception) { return new List<IPAddress>(); } }以上所说的联网,包括连接在局域网中。
希望给有需要的朋友们带来帮助;
到此这篇关于C#获取本地IP的四种方式示例详解的文章就介绍到这了,更多相关C#获取本地IP内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
为了访问数据库,就要提供数据库连接类,在C#中,是通过Connection类来实现的四种类型的连接方式SQLConnectionADOConnectionOra
这篇文章主要介绍了Java中遍历ConcurrentHashMap的四种方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
这篇文章主要介绍了SpringDataJpa的四种查询方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本文实例讲述了C#实现获取本地内网(局域网)和外网(公网)IP地址的方法。分享给大家供大家参考,具体如下:1、获取本机的IP地址集合://////获取本机所有i
钻展推广四种方方式是什么?如果您想了解钻展推广四种方式请往下看小小编整理的钻展推广四种方式。感谢大家的支持和阅读。以下的内容供大家借鉴。 钻展推广四种方式