C# 获取本机IP(优化项目实际使用版)
2024-09-04 16:56:40
好一段时间没来更新博客了,因为密码实在记不住,烦死了,密码干脆直接用那个找回密码链接的一部分。
吐槽完说正事了,关于C# 获取本机IP的,最开始用的是下面的,但是因为获取IP的有点多,而且难判断,忽略了。
IPAddress[] addressList = Dns.GetHostAddresses(Dns.GetHostName());
后来换成了获取所有网卡的,网上这个案例很多
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
但是获取的IP地址也还是很多,判断少,最后改为这样的:
public static List<IPAddress> GetServerIP()
{
List<IPAddress> ipaddress = new List<IPAddress> (); //获取网卡
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
try
{
//用于ping当前获取的网卡是否当前电脑使用的
using (Ping ping = new Ping())
{
foreach (NetworkInterface ni in interfaces)
{
//初学应该比较难懂这段,就是说枚举里是否包含某个枚举
//Wireless80211(无线连接)是否拥有Ethernet(以太网连接),所以所有包含以太网的都可以
if ((ni.NetworkInterfaceType & NetworkInterfaceType.Ethernet) != NetworkInterfaceType.Ethernet)
continue;
var ippros = ni.GetIPProperties().UnicastAddresses;
foreach (UnicastIPAddressInformation ip in ippros)
{
//还可以继续判断是否为0.0.0.0,是否172.0.0.1 之类的
//忽略不是ipv4的
if (ip.Address.AddressFamily != AddressFamily.InterNetwork)
continue;
//ping获取的IP地址,如果ping不通则不是当前使用的网络
var rep = ping.Send(ip.Address);
if (rep.Status != IPStatus.Success)
continue;
//项目需要
ipaddress.Add(ip.Address);
}
}
}
}
catch
{
//win7如果全部网卡禁用ping会报错,返回空
return ipaddress;
}
return ipaddress;
}
相对网上的,加了ping和Ethernet枚举判断的优化(不会忽略无线网卡)
懒得排版了,今天事还比较多,大家凑合着看。
最新文章
- MongoDB学习笔记一:入门
- jquery 轮播图
- Machine Learning 学习笔记 (4) —— 广义线性模型
- c++/java/c# 几种编程语言的指针、引用比较
- 安装ejabberd2并配置MySQL为其数据库
- UITextView光标在中间的问题
- Android logcat使用
- 删除已分配IP的静态IP地址池
- [上传下载] C#修改DownLoadHelper上传下载帮助类 (转载)
- springmvc学习笔记(理论)
- java 逆波兰表达式
- Nopcommerce架构浅谈之架构层次
- 表格单元格td设置宽度无效的解决办法 .
- iOS关于友盟分享弹不出面板问题
- ADB——管理应用
- js弹出层学习
- 什么是DNS服务器
- python学习笔记013——推导式
- EditPlus 4.3.2477 中文版已经发布(11月3日更新)
- BZOJ1718: [Usaco2006 Jan] Redundant Paths 分离的路径【边双模板】【傻逼题】