#region ip
/// <summary>
/// ip rang ,ip
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
bool Get_IPRangExist(string str, string ip)
{
bool val = false;
if (string.IsNullOrEmpty(str))
{
return val;
}
if (str.Contains(ip))
{
return true;
}
string[] sp = str.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
if (sp.Length > 0)
{
foreach (var item in sp)
{

if (item.Contains("-"))
{
string[] sp2 = item.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
if (sp2.Length == 2)
{
val = GetIPInfo2(sp2[0], sp2[1], ip);
if (val)
{
break;
}
}
}
else if (item.Contains("*")) {
string[] spsynctlist = item.Split(new string[]{"*"},StringSplitOptions.RemoveEmptyEntries);
foreach (var item_sp in spsynctlist)
{
if (ip.Contains(item_sp))
{
val = true; break;
}

}

}
if(item == ip)
{
val = true; break;
}
}
}
return val;
}

bool GetIPInfo2(string source, string des, string ip)
{
bool B_flag = false;
if (source == des)
{
return source == ip;
}

string[] p1 = source.Split(new char[] { '.' });
string[] p2 = des.Split(new char[] { '.' });
List<Tuple<int,int>> tupeIPList=new System.Collections.Generic.List<Tuple<int,int>>();

for (int i = 0; i < 4; i++)
{
string a = p1[i];string b = p2[i];
int start = Math.Min(int.Parse(a), int.Parse(b));
int end = Math.Max(int.Parse(a), int.Parse(b));
tupeIPList.Add(new Tuple<int, int>(start, end));
}
#region MyRegion
for (int a =tupeIPList[0].Item1; a <= tupeIPList[0].Item2; a++)
{
for (int b =tupeIPList[1].Item1; b <= tupeIPList[1].Item2; b++)
{
for (int c = tupeIPList[2].Item1; c <= tupeIPList[2].Item2; c++)
{
for (int d = tupeIPList[3].Item1; d <= tupeIPList[3].Item2;d++)
{
string template = string.Format("{0}.{1}.{2}.{3}",a,b,c,d);
if (template==ip)
{
B_flag = true;
break;
}
}
}
}
}
#endregion
return B_flag;

}

#endregion
public void test() {
Console.WriteLine("start");
List<Tuple<string, string>> a = new List<Tuple<string, string>>();
a.Add(new Tuple<string, string>("10.0.0.0-10.255.255.255", "10.19.48.27"));
a.Add(new Tuple<string, string>("10.*.*.*", "10.19.48.27"));
a.Add(new Tuple<string, string>("10.1.25.13-10.255.25.13", "10.19.48.27"));
a.Add(new Tuple<string, string>("10.1.25.13-10.255.25.13", "10.19.25.13"));
foreach (var item in a)
{
var start1 = System.Diagnostics.Stopwatch.StartNew(); start1.Start();
Console.WriteLine(Get_IPRangExist(item.Item1,item.Item2));
start1.Stop();
Console.WriteLine(item.Item1+" "+item.Item2+" ------- "+start1.ElapsedMilliseconds.ToString());
}
}

ip范围生成 C#的更多相关文章

  1. 使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页

    使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页 方法1:linux下使用awk命令 # cat access1.log | awk '{print $1" &q ...

  2. Arria10调试问题集之——480转成270中DDR4 IP重新生成的问题

    在把FPGA器件从480修改成270时DDR4报错: Error (16383): Silicon revision parameter for the following EMIF/PHYLite ...

  3. C# 输入ip段生成ip地址

    具体代码如下: private void button1_Click(object sender, EventArgs e)        {            string StartIp = ...

  4. C# 指定ip段生成ip地址

    private void button1_Click(object sender, EventArgs e) { string StartIp = ""; string EndIp ...

  5. 关于ALTERA生成IP核卡住

    最近搞fft,用的quartus13.1版本,发现quartus和modelism存在各种各样的坑啊,fftIP核大家可能也遇到过ip核 生成到一半就卡住的问题,之前我是通过换系统解决的,但是好景不长 ...

  6. TCP/IP协议(二)tcp/ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

  7. 图解TCP/IP→第2章基础知识

    ####TCP.IP背景**关键词:ARPANET,UNIX,分组交换技术,*ARPANET(阿帕网),也是全球互联网的鼻祖.阿帕网的成功也充分证明了基于分组交换技术的通信方法的可行性.*20世纪70 ...

  8. TCP/IP协议学习(二) LWIP用户自定义配置文件解析

    LWIP协议支持用户配置,可以通过用户裁剪实现最优化配置,LWIP默认包含opts.h作为系统默认配置,不过通过添加lwipopts.h文件并包含在opts.h头文件之前就可以对lwip进行用户裁剪, ...

  9. 【TCP/IP 合约】 TCP/IP 基金会

    总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后開始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...

随机推荐

  1. DZY Loves Chinese / DZY Loves Chinese II

    题面在这里! 这两个其实是一个题啦..双倍经验加成23333 可以很简单的发现如果把一条树边和所有覆盖它的非树边都删去的话,那么图会不连通: 如果再手玩一下可以发现,如果把两个被非树边覆盖的集合相同的 ...

  2. BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3399 [题目大意] 将一个集合调整成另一个集合中的数,把一个数+1需要消耗x,-1需要 ...

  3. JavaScript之引用类型(Array类型)

    除了Object类型,Array是ECMAScript中最常用的类型了. 与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据. 而且,ECMAScript数组的大小是可以动态调 ...

  4. js的执行环境及作用域

    主要的是执行环境和作用域链. 执行环境 执行环境定义了变量或函数有权访问的其他数据,每个函数都有一个执行环境,每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个变量对象中, ...

  5. [转]servlet配置中init-param

    需要初始化的参数比如你的servlet里面有个属性为int total=0默认是0,你想让他初始时50则用init-param 给他赋值 init-param面对应的参数名和值,是给servlet在初 ...

  6. 将HTML表格的每行每列转为数组,采集表格数据

    将HTML表格的每行每列转为数组,采集表格数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //将HTML ...

  7. [译]SQL数据库迁移:从低版到高版本

    我见过太多的数据库管理员花大量的时间在数据库迁移上,即便在客户的实际环境亦是如此.由于微软频繁的发布新版,基于业务和客户的要求,应用服务不得不同时升级.当然,还有许多用户仍在使用SQL Server ...

  8. 【web.xml】报错java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    今天搭建新的项目,虽然在web.xml中配置了ContextLoaderListener以及IntrospectorCleanupListener 如下: web.xml中部分代码: <!-- ...

  9. 降维工具箱drtool

    工具箱下载:http://leelab.googlecode.com/svn/trunk/apps/drtoolbox/ ——————————————————————————————————————— ...

  10. JSON相关