扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
主要功能:查询一个IP所有的IP段.
关键:从Byte数组到ulong的转换出来的数字和 IPAddress.Address 返回值的是不一样的.
以下是引用片段: using System; using System.Collections.Generic; using System.Text; using System.Net; namespace IPUtility { class Program { static void Main(string[] args) { IPRangeManage irm = new IPRangeManage(); irm.Add(new IPRange("石家庄", "219.148.24.0", "219.148.63.255")); irm.Add(new IPRange("石家庄", "222.222.0.0", "222.222.63.255")); irm.Add(new IPRange("唐山", "219.148.64.0", "219.148.79.255")); irm.Add(new IPRange("保定", "219.148.20.0", "219.148.23.255")); Console.WriteLine(irm.Search("219.148.56.3").Name); Console.ReadLine(); } } public class IPRange { private string _Name = string.Empty; private ulong _BeginIP = 0; private ulong _EndIP = Int32.MaxValue; /**//// /// IP段名称 /// public string Name { get { return _Name; } set { _Name = value; } } /**//// /// ?始IP /// public ulong BeginIP { get { return _BeginIP; } set { _BeginIP = value; } } /**//// /// ?束IP /// public ulong EndIP { get { return _EndIP; } set { _EndIP = value; } } /**//// /// 此IP段的范? /// public ulong Range { get { return EndIP - BeginIP; } } public IPRange(string name, string ipBegin, string ipEnd) { this.Name = name; this.BeginIP = IP2A(ipBegin); this.EndIP = IP2A(ipEnd); } public static ulong IP2A(string ip) { byte[] bytes = IPAddress.Parse(ip).GetAddressBytes(); ulong ret = 0; foreach (byte b in bytes) { ret <<= 8; ret |= b; } return ret; } public static int Compare(IPRange x, IPRange y) { if(x.Range == y.Range) return 0; else if(x.Range > y.Range) return 1; else return -1; } } public class IPRangeManage { public IPRangeManage() { } private List< IPRange> _IPRangeList = new List< IPRange>(); private bool _NeedSort = true; public void Add(IPRange ipRange) { _IPRangeList.Add(ipRange); _NeedSort = true; } private void Sort() { if (_NeedSort) { _IPRangeList.Sort(new Comparison(IPRange.Compare)); } } public IPRange Search(string ipString) { ulong ip = IPRange.IP2A(ipString); this.Sort(); foreach (IPRange ir in _IPRangeList) { if (ir.BeginIP <= ip && ir.EndIP >= ip) { return ir; } } return null; } } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者