2019-10-31-C#-dotnet-获取整个局域网的-ip-地址
| title | author | date | CreateTime | categories |
|---|---|---|---|---|
|
C# dotnet 获取整个局域网的 ip 地址
|
lindexi
|
2019-10-31 08:57:55 +0800
|
2019-10-28 11:57:23 +0800
|
dotnet C#
|
局域网可以使用的 IP 地址有很多,我写了一段代码用来枚举所有可以用的 ip 地址
小伙伴都知道,局域网可以使用的 IP 范围如下
- A类地址:10.0.0.0 - 10.255.255.255
- B类地址:172.16.0.0 - 172.31.255.255
- C类地址:192.168.0.0 -192.168.255.255
我写了函数 GetIpList 用于在传入两个 IP 地址,一个是开始,一个是结束地址,返回这个范围所有的 IP 地址
private static IEnumerable<IPAddress> GetIpList(IPAddress ipFrom, IPAddress ipTo)
{
var ipEnd = ipTo.GetAddressBytes();
var ipNext = ipFrom.GetAddressBytes(); while (CompareIPs(ipNext, ipEnd) < 1)
{
var ip = new IPAddress(ipNext);
IncrementIP(ipNext);
yield return ip;
}
} private static int CompareIPs(byte[] ip1, byte[] ip2)
{
if (ip1 == null || ip1.Length != 4)
{
return -1;
} if (ip2 == null || ip2.Length != 4)
{
return 1;
} var compare = ip1[0].CompareTo(ip2[0]);
if (compare == 0)
{
compare = ip1[1].CompareTo(ip2[1]);
} if (compare == 0)
{
compare = ip1[2].CompareTo(ip2[2]);
} if (compare == 0)
{
compare = ip1[3].CompareTo(ip2[3]);
} return compare;
} private static void IncrementIP(byte[] ip, int idx = 3)
{
if (ip == null || ip.Length != 4 || idx < 0)
{
return;
} if (ip[idx] == 254)
{
ip[idx] = 1;
IncrementIP(ip, idx - 1);
}
else
{
ip[idx] = (byte) (ip[idx] + 1);
}
}
此时可以列举局域网所有地址
private static void Main(string[] args)
{
var ipFrom = IPAddress.Parse("172.16.0.0");
var ipTo = IPAddress.Parse("172.31.255.255");
Console.WriteLine(GetIpList(ipFrom, ipTo).Count()); ipFrom = IPAddress.Parse("192.168.0.0");
ipTo = IPAddress.Parse("192.168.255.255");
Console.WriteLine(GetIpList(ipFrom, ipTo).Count()); ipFrom = IPAddress.Parse("10.0.0.0");
ipTo = IPAddress.Parse("10.255.255.255");
Console.WriteLine(GetIpList(ipFrom, ipTo).Count());
}
本文代码放在 github 欢迎小伙伴访问
2019-10-31-C#-dotnet-获取整个局域网的-ip-地址的更多相关文章
- C# dotnet 获取整个局域网的 ip 地址
局域网可以使用的 IP 地址有很多,我写了一段代码用来枚举所有可以用的 ip 地址 小伙伴都知道,局域网可以使用的 IP 范围如下 A类地址:10.0.0.0 - 10.255.255.255 B类地 ...
- 【Win 10 应用开发】获取本机的IP地址
按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...
- 获取本机的IP地址(局域网)与主机名称
编写内容保存为bat @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ e ...
- PHP获取APP客户端的IP地址的方法
分析php获取客户端ip 用php能获取客户端ip,这个大家都知道,代码如下: /** * 获取客户端ip * @param number $type * @return string */ func ...
- 【Go】获取用户真实的ip地址
原文链接:https://blog.thinkeridea.com/201903/go/get_client_ip.html 用户请求到达提供服务的服务器中间有很多的环节,导致服务获取用户真实的 ip ...
- 获取本机的ip地址(排除虚拟机,蓝牙等ip)
项目中遇到了要获取本地ip的需求,网上查找资料遇到很多坑,很多Java获取本机ip地址的方法要么是根本获取不到,要么是获取的有问题. 网上常见的方法如下 InetAddress.getLocalHos ...
- 获取android模拟器的IP地址
http://blog.csdn.net/yjkwf/article/details/7244632 1.输入adb devices查看加载的设备 2.使用 adb -s [设备] [命令]执行命令 ...
- Java 工具类 IpUtil - 获取本机所有 IP 地址,LocalHost 对应地址 IP
Java 工具类 IpUtil - 获取本机所有 IP 地址,LocalHost 对应地址 IP IP 工具类 源代码: /** * <p> * * @author XiaoPengwei ...
- nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容
1.nodejs获取客户端真实的IP地址: 在一般的管理网站中,尝尝会需要将用户的一些操作记录下来,并记住是哪个用户进行操作的,这时需要用户的ip地址,但是往往当这些应用部署在服务器上后,都使用了ng ...
- 获取当前设备的IP地址
头文件: #import <ifaddrs.h> #import <arpa/inet.h> #import <net/if.h> 宏定义: #define IOS ...
随机推荐
- The linux command之环境
一.环境 shell在环境中存储了两种数据类型:环境变量(environment variables )shell变量(shell variables).在shell中这两种变量基本没有什么不同. 此 ...
- for循环和字典预习
print("*" *8)for a in range(1,9): print(a,end="")#1-9的奇数print()for a in range(1, ...
- 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件)
webrtc的音频处理模块分为降噪ns和nsx,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到 ...
- oracle将查询结果横转纵
SELECT '残疾人|民政|综合治理|计划生育|物业监管|安全生产|环境类|司法信访|党建|社会组织|文化体育|社保' D , '53|52|51|50|49|48|47|5|4|3|2|1' g ...
- 20175323《Java程序设计》第五周学习总结
教材学习内容总结 第五章的知识框架总结 代码托管:https://gitee.com/ruirui_yummy/java-besti-20175323 代码提交过程截图 代码量截图 学习进度条 代码行 ...
- (转)I帧,P帧,B帧 .
转:http://blog.csdn.net/abcjennifer/article/details/6577934 视频压缩中,每帧代表一幅静止的图像.而在实际压缩时,会采取各种算法减少数据的容量, ...
- ie9table排列不对.td错行,多了一列
发现问题是ie9,本地用google/ie11都是好的. 有合并行的问题,本来就5列,偏偏莫名其妙多了一列,某一行上就有一个单元格空着,往后推了一列,刷新无数次都是同一行错位. 略微改动一下jsp(删 ...
- Java 12 正式发布,8大新特性!
自 2 月 7 日开始,Java/JDK 12 就进入了 RC 阶段.按照发布周期,美国当地时间 3 月 19 日,也就是北京时间 20 号 Java 12 正式发布了! △ JDK 12 GA 发布 ...
- vue-router使用入门
安装及基本配置 # 安装 npm install vue-router # 使用 import Vue from 'vue' import VueRouter from 'vue-router' Vu ...
- CSS清除默认边距
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquo ...