好一段时间没来更新博客了,因为密码实在记不住,烦死了,密码干脆直接用那个找回密码链接的一部分。

吐槽完说正事了,关于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(优化项目实际使用版)的更多相关文章

  1. Shell 命令行获取本机IP,grep的练习

    Shell 命令行获取本机IP,grep的练习 在 mac 下面输入 ifconfig 或者在 linux 下面输入 ip a 就可以得到我们的网卡信息.不过通常情况下,我们需要查看的是我们的IP地址 ...

  2. 获取本机IP地址

    这里有两种方法: //获取本机IP - (NSString *)localIPAddress { NSString *localIP = nil; struct ifaddrs *addrs; ) { ...

  3. python未知网卡名情况下获取本机IP

    import socket def get_ip(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: # doesn't even ...

  4. 关于是用dotnet获取本机IP地址+计算机名的方法

    印象中在maxscript帮助文档里找到过方法,但是当时没记下来.只能通过dotnet实现了. 如果电脑有无线网卡和本地连接,可能会出现乱码,也问了写dotnet的朋友,提供了一些思路,不过最终还是使 ...

  5. Windows下获取本机IP地址方法介绍

    Windows下获取本机IP地址方法介绍 if((hostinfo = gethostbyname(name)) != NULL) { #if 1 ; printf("IP COUNT: % ...

  6. python学习之最简单的获取本机ip信息的小程序

    文章是从我的个人博客粘贴过来的,大家可以直接访问我的个人博客哦 http://www.iwangzheng.com 获取本机ip信息的命令ifconfig总是在用,这次拿到pyhton代码里,感觉py ...

  7. java获取本机IP地址

    转载自:http://blog.csdn.net/thunder09/article/details/5360251 在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一 ...

  8. #获取本机IP地址时排除IPv6类型,只返回IPv4地址的方法

    public static string GetLocalIP(){try{string HostName = Dns.GetHostName(); //得到主机名IPHostEntry IpEntr ...

  9. 获取本机IP、mac地址、计算机名

    python获取本机IP.mac地址.计算机名 在python中获取ip地址和在php中有很大不同,我们先来看一下python 获得本机MAC地址: >>> import uuid ...

随机推荐

  1. [推荐]Silverlight 2 开发者海报

    从Brad Abrams的Blog上看到了一张Silverlight 2开发者海报,非常酷,拿出来与大家分享. [JPG版本 5.8MB] [PNG版本 6.5MB] [TIF版本 19.9 MB] ...

  2. I.MX6 android 源码下载

    /************************************************************************* * I.MX6 android 源码下载 * 说明 ...

  3. Oracle常用数据库表操作

    配置数据库: user:orcl.passward:71911.Hao全局数据库名:orcl..解锁数据库用户名,SCOTT,SYSTEM,SYS,   PWD:71911.Hao输入sqlplus, ...

  4. vs2008工程部署不成功,可能是远程文件路径出现问题

    解决方法: 修改工程属性页的配置属性 调试中的远程可执行文件的路径 部署中的远程目录的路径

  5. 关于cout输出精度问题

    #include <iostream.h> #include <iomanip.h> void main(void) { cout.setf(ios::fixed); cout ...

  6. 设计模式——模板模式(Template Pattern)

    在读Spring源码的时候,发现Spring代码中运用了大量的模板模式,比如根据文件系统目录加载配置文件(FileSystemXmlApplicationContext),类路径加载配置文件(Clas ...

  7. hdoj5402 【模拟/构造】

    题意: 给你一个矩阵,每个值都是非负,然后让你从左上角走到右下角,每个点只能走一次,求到终点的最大值,还要输出一条路径 思路: 一开始拿到还以为搜索之类的,但是发现神特么暴力+麻烦(因为路径这个东西. ...

  8. Unity Transform常识(转)

    Variables   position: Vector3  物体在世界坐标中的位置. transform.position=Vector3(10,10,10)//把物体放到(x=10,y=10,z= ...

  9. bzoj2064: 分裂(状压dp)

    Description 背景: 和久必分,分久必和... 题目描述: 中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力. 同时经常搞OI的他把这个变成了一个数学模型. 假设中 ...

  10. 7天学完Java基础之6/7

    final关键字的概念与四种用法 final关键字代表最终,不可改变的 常见四种用法: 可以用来修饰一个类 当前这个类不能有任何子类 可以用来修饰一个方法 当final关键字用来修饰一个方法的时候,这 ...