C#获取本地IP的四种方式示例详解
1.第一种方式
采用System.Net.Dns的GetHostAddress的方式,具体请看代码:
//////网络不通畅可以获取 ///不过能获取到具体的IP /// ///publicstaticList GetByGetHostAddresses() { try { IPAddress[]adds=Dns.GetHostAddresses(Dns.GetHostName()); returnadds==null||adds.Length==0?newList ():adds.ToList (); } catch(Exception) { returnnewList (); } }
这种方式受到网络的影响,如果没有连接到网络,本地配置的部分IP是获取不到的,我也遇到一种情况是,电脑环境正常,就是获取不到,原因至今还不知道;
2.第二种方式
采用System.Management.ManagementClass来获取,详细请看代码:
//////只有网络通畅才能获取 /// ///publicstaticList GetByManagementClass() { try { ManagementClassmClass=newSystem.Management.ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollectionmanagementObjectCollection=mClass.GetInstances(); List ls=newList (); foreach(variteminmanagementObjectCollection) { if((bool)item["IPEnabled"]==true) { foreach(varipin(string[])item["IPAddress"]) { IPAddressipout=null; IPAddress.TryParse(ip,outipout); if(ipout!=null) { ls.Add(ipout); } } } } returnls; } catch(Exception) { returnnewList (); } }
同样的这种方式也受到网络的约束,没有联网的状态下不一定能够获取到IP;
3.第三种方式
我们平时在命令行中输入ipconfig命令同样也是能获取,在程序中启动Ipconfig应用程序,然后解析出来,也是可以获取得到IP,详细请看代码:
publicstaticListGetByCMD() { try { Processcmd=newProcess(); 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(); stringinfo=""; List ls=newList (); //info=cmd.StandardOutput.ReadToEnd(); Regexvalidipregex=newRegex(@"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}"); //newRegex(@"^(([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) { IPAddressip=null; Console.WriteLine(info); info=validipregex.Match(info).Value; IPAddress.TryParse(info,outip); if(ip!=null) { ls.Add(ip); } } cmd.WaitForExit(); cmd.Close(); returnls; } catch(Exception) { returnnewList (); } }
即便是通过这种方式来获取IP,如果在本机电脑没有联网的状态下,也是获取不到IP的,并且也不太建议使用这种方式;
4.第四种方法
采用NetworkInterface.GetAllNetworkInterfaces的方式是不受网络的影响的,联网或者不联网都能够获取到IP,详细请看代码:
//////无论网络通不通都能获取到Ip /// ///publicstaticList GetByNetworkInterface() { try { NetworkInterface[]intf=NetworkInterface.GetAllNetworkInterfaces(); List ls=newList (); foreach(variteminintf) { IPInterfacePropertiesadapterPropertis=item.GetIPProperties(); UnicastIPAddressInformationCollectioncoll=adapterPropertis.UnicastAddresses; foreach(varcolincoll) { ls.Add(col.Address); } } returnls; } catch(Exception) { returnnewList (); } }
以上所说的联网,包括连接在局域网中。
希望给有需要的朋友们带来帮助;
到此这篇关于C#获取本地IP的四种方式示例详解的文章就介绍到这了,更多相关C#获取本地IP内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。