C# 获取本机IP(优化项目实际使用版)
好一段时间没来更新博客了,因为密码实在记不住,烦死了,密码干脆直接用那个找回密码链接的一部分。
吐槽完说正事了,关于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枚举判断的优化(不会忽略无线网卡)
懒得排版了,今天事还比较多,大家凑合着看。
C# 获取本机IP(优化项目实际使用版)的更多相关文章
- Shell 命令行获取本机IP,grep的练习
Shell 命令行获取本机IP,grep的练习 在 mac 下面输入 ifconfig 或者在 linux 下面输入 ip a 就可以得到我们的网卡信息.不过通常情况下,我们需要查看的是我们的IP地址 ...
- 获取本机IP地址
这里有两种方法: //获取本机IP - (NSString *)localIPAddress { NSString *localIP = nil; struct ifaddrs *addrs; ) { ...
- python未知网卡名情况下获取本机IP
import socket def get_ip(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: # doesn't even ...
- 关于是用dotnet获取本机IP地址+计算机名的方法
印象中在maxscript帮助文档里找到过方法,但是当时没记下来.只能通过dotnet实现了. 如果电脑有无线网卡和本地连接,可能会出现乱码,也问了写dotnet的朋友,提供了一些思路,不过最终还是使 ...
- Windows下获取本机IP地址方法介绍
Windows下获取本机IP地址方法介绍 if((hostinfo = gethostbyname(name)) != NULL) { #if 1 ; printf("IP COUNT: % ...
- python学习之最简单的获取本机ip信息的小程序
文章是从我的个人博客粘贴过来的,大家可以直接访问我的个人博客哦 http://www.iwangzheng.com 获取本机ip信息的命令ifconfig总是在用,这次拿到pyhton代码里,感觉py ...
- java获取本机IP地址
转载自:http://blog.csdn.net/thunder09/article/details/5360251 在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一 ...
- #获取本机IP地址时排除IPv6类型,只返回IPv4地址的方法
public static string GetLocalIP(){try{string HostName = Dns.GetHostName(); //得到主机名IPHostEntry IpEntr ...
- 获取本机IP、mac地址、计算机名
python获取本机IP.mac地址.计算机名 在python中获取ip地址和在php中有很大不同,我们先来看一下python 获得本机MAC地址: >>> import uuid ...
随机推荐
- codeforces 696A A. Lorenzo Von Matterhorn(水题)
题目链接: A. Lorenzo Von Matterhorn time limit per test 1 second memory limit per test 256 megabytes inp ...
- iOS 生成随机数
arc4random 1.获取一个随机整数范围在:[0,100)包括0,不包括100 int x = arc4random() % 100; 2. 获取一个随机数范围在:[500,1000],包括5 ...
- BZOJ_3063_[Usaco2013]Route Designing_DP
BZOJ_3063_[Usaco2013]Route Designing_DP Description After escaping from the farm, Bessie has decided ...
- ES6 模板编译
顾名思义,就是用反引号编写一个模板字符串, 用echo将模板转为javascrip表达式字符串, 用正则将基础字符串转为想要字符串 将代码封装在函数中返回: 注: 用到es6属性${} var tem ...
- JAVA泛型与可变参数
泛型的引入: 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题.也就存在这隐患,所以Java提供了泛型来解决这个安全问题. 格式: 泛型类:public class ...
- HTML 新属性
accesskey 属性 -- 代表链接的快捷键访问方式 定义了accesskey的链接可以使用快捷键(ALT+字母)访问. 主菜单与导航菜单使用accesskey,通常是不错的选择. 取值: 字母 ...
- ORA-00020: maximum number of processes (xxxx) exceeded 报错解决方法
转自:http://blog.51cto.com/lee90/1788124 今天java开发在连接线上的oracle大量导数据,一会提示连接不上数据库了.我本地用sqldeveloper也连接不上. ...
- BZOJ3990 排序
题目:www.lydsy.com/JudgeOnline/problem.php?id=3990 这题很不错. 刚开始时无从下手,想了好多$O((2^n)log(2^n))$ 的idea,但是都不行. ...
- C++中的new用法总结
前段时间复习面试的时候,看到这个问题经常有问到,我这个小白就看了些博客和书,总结一下. new可以说是个一个关键字,也可以说是一个运算符,并且可以被重载. 1.new operator 这个就是平时最 ...
- emacs版本差异(转载)
emacs23 就是原装的,由 gnu 发布的 emacs.emacs-lucid 是由 ubuntu 调整过的.emacs-nox 是不带 x system 的 emacs 版本.除非只在终端下用, ...