C# dotnet 获取整个局域网的 ip 地址
局域网可以使用的 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 欢迎小伙伴访问
我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新
如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
C# dotnet 获取整个局域网的 ip 地址的更多相关文章
- 获取本机的IP地址(局域网)与主机名称
编写内容保存为bat @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ e ...
- PHP获取APP客户端的IP地址的方法
分析php获取客户端ip 用php能获取客户端ip,这个大家都知道,代码如下: /** * 获取客户端ip * @param number $type * @return string */ func ...
- 获取本机的ip地址(排除虚拟机,蓝牙等ip)
项目中遇到了要获取本地ip的需求,网上查找资料遇到很多坑,很多Java获取本机ip地址的方法要么是根本获取不到,要么是获取的有问题. 网上常见的方法如下 InetAddress.getLocalHos ...
- 【Win 10 应用开发】获取本机的IP地址
按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...
- nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容
1.nodejs获取客户端真实的IP地址: 在一般的管理网站中,尝尝会需要将用户的一些操作记录下来,并记住是哪个用户进行操作的,这时需要用户的ip地址,但是往往当这些应用部署在服务器上后,都使用了ng ...
- 获取当前设备的IP地址
头文件: #import <ifaddrs.h> #import <arpa/inet.h> #import <net/if.h> 宏定义: #define IOS ...
- 服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址
首先,在nginx配置中添加如下配置 server { listen ; server_name www.wenki.info; #要访问的域名 charset utf8; location / { ...
- 【Go】获取用户真实的ip地址
原文链接:https://blog.thinkeridea.com/201903/go/get_client_ip.html 用户请求到达提供服务的服务器中间有很多的环节,导致服务获取用户真实的 ip ...
- 获取客户端的请求IP地址
获取客户端的请求IP地址 package com.microClass.util; import javax.servlet.http.HttpServletRequest; import java. ...
随机推荐
- Inno Setup生成桌面快捷方式
在做项目的时候,需要打包成exe安装包.先前使用的是vs来打包,生成了setup.exe 和 *.msi的安装文件,不过也算顺利. 后因为要求采取 Inno Setup来打包程序,其中遇到个创建快捷方 ...
- python的sorted排序具体解释
排序.在编程中常常遇到的算法.我也在几篇文章中介绍了一些关于排序的算法. 有的高级语言内置了一些排序函数.本文讲述Python在这方面的工作.供使用python的程序猿们參考,也让没有使用python ...
- python 函数定义与调用时,不定长参数的传入
- CentOs7.0安装scrapy (云服务器上)
centos7 默认Python 2.7,支持twisted 首先准备环境 yum install gcc libffi-devel openssl-devel libxml2 libxslt-dev ...
- console.log详细介绍
console.log详细介绍 效果图: 代码如下: console.log("%c hello world!:http://www.baidu.com","color: ...
- EC Round 41 (Rated for Div. 2)主席树 E. Tufurama
简单分析一下,对于x<y,求a[x]>=y 同时a[y]>=x 再简化一下,求1-a[y]区间内大于>=y的个数...主席树牛逼 #include<iostream> ...
- 性能改善后复杂SQL
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-/ ...
- kuangbin专题-连通图A - Network of Schools
这道题的意思是就是 问题 1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件. 2:至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校 ...
- Springboot2 Logback mybatis 打印sql执行语句
把这个加入到logback.xml 中就可以打印mysql的日志了 <logger name="jdbc.sqltiming" level="debug" ...
- 【codeforces 777E】Hanoi Factory
[题目链接]:http://codeforces.com/problemset/problem/777/E [题意] 让你摆汉诺塔片; 要求在上面的片的外圈大于在下面的片的内圈,且小于下面的片的外圈; ...