#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. java环境搭建的一些小知识

    1.Path配置的是可执行程序的路径,例如(java.exe.javac.exe),这些可执行程序一般在bin目录下,所以path一般配置的是在程序包的bin目录下,实现帮助操作系统操作java的目的 ...

  2. [NOIP2016]天天爱跑步(树上差分+线段树合并)

    将每个人跑步的路径拆分成x->lca,lca->y两条路径分别考虑: 对于在点i的观察点,这个人(s->t)能被观察到的充要条件为: 1.直向上的路径:w[i]=dep[s]-dep ...

  3. JVM 参数配置及详解 -Xms -Xmx -Xmn -Xss 调优总结

    堆大小设置 JVM 中最大堆大小有三方面限制: ①.相关操作系统的数据模型(32-bt还是64-bit)限制; ②.系统的可用虚拟内存限制; ③.系统的可用物理内存限制. 32位系统 下,一般限制在1 ...

  4. 【OpenJudge9277】【递推】Logs Stacking堆木头

    Logs Stacking堆木头 总时间限制: 1000ms 内存限制: 131072kB [描述] Daxinganling produces a lot of timber. Before loa ...

  5. Codeforces Round #345 (Div. 1) D. Zip-line 上升子序列 离线 离散化 线段树

    D. Zip-line 题目连接: http://www.codeforces.com/contest/650/problem/D Description Vasya has decided to b ...

  6. TCP连接 断开

     参考:http://blog.csdn.net/cyberhero/article/details/5827181 1.建立连接协议 (三次握手)      (1)客户端发送一个带SYN标志的TCP ...

  7. JavaScript入门详解

    开始开发工作. 一.Alert Confirm Prompt <html> <head> <script type="text/javascript" ...

  8. vs code 使用Git进行源代码管理

    第一步:用vs code 打开一个空文件夹,如本示例Demo2, 第二步:点击左侧第三个图标“源代码管理”,然后再点击初始化存储库按钮 初始化之后界面现变成下图所示: 此时文件夹中会新增一个隐藏文件夹 ...

  9. pyqt5生成的APP制作DMG

    http://blog.csdn.net/wudj810818/article/details/70557284 1.环境 Mac OS Python3.5 PyQt5 2.所需工具 Pyinstal ...

  10. web.xml文件的作用及基本配置

    Java的web工程中的web.xml文件有什么作用呢?它是每个web工程都必须的吗? 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. 那什么时候需要 ...