ip查询

原创 2011年01月11日 09:07:00

using System;
  2using System.Collections.Generic;
  3using System.Text;
  4using System.Net;
  5
  6namespace IPUtility
  7{
  8    class Program
  9    {
 10        static void Main(string[] args)
 11        {
 12            IPRangeManage irm = new IPRangeManage();
 13            irm.Add(new IPRange("石家庄", "219.148.24.0", "219.148.63.255"));
 14            irm.Add(new IPRange("石家庄", "222.222.0.0", "222.222.63.255"));
 15            irm.Add(new IPRange("唐山", "219.148.64.0", "219.148.79.255"));
 16            irm.Add(new IPRange("保定", "219.148.20.0", "219.148.23.255"));
 17
 18            Console.WriteLine(irm.Search("219.148.56.3").Name);
 19
 20            Console.ReadLine();
 21
 22        }
 23
 24
 25    }
 26
 27    public class IPRange
 28    {
 29        private string _Name = string.Empty;
 30
 31        private ulong _BeginIP = 0;
 32
 33        private ulong _EndIP = Int32.MaxValue;
 34
 35        /**//**//**//// <summary>
 36        /// IP段名称
 37        /// </summary>
 38        public string Name
 39        {
 40            get { return _Name; }
 41            set { _Name = value; }
 42        }
 43
 44        /**//**//**//// <summary>
 45        /// 开始IP
 46        /// </summary>
 47        public ulong BeginIP
 48        {
 49            get { return _BeginIP; }
 50            set { _BeginIP = value; }
 51        }
 52
 53        /**//**//**//// <summary>
 54        /// 结束IP
 55        /// </summary>
 56        public ulong EndIP
 57        {
 58            get { return _EndIP; }
 59            set { _EndIP = value; }
 60        }
 61
 62
 63        /**//**//**//// <summary>
 64        /// 此IP段的范围
 65        /// </summary>
 66        public ulong Range
 67        {
 68            get
 69            {
 70                return EndIP - BeginIP;
 71            }
 72        }
 73
 74        public IPRange(string name, string ipBegin, string ipEnd)
 75        {
 76            this.Name = name;
 77            this.BeginIP = IP2A(ipBegin);
 78            this.EndIP = IP2A(ipEnd);
 79        }
 80
 81
 82        public static ulong IP2A(string ip)
 83        {
 84            byte[] bytes = IPAddress.Parse(ip).GetAddressBytes();
 85            ulong ret = 0;
 86
 87            foreach (byte b in bytes)
 88            {
 89                ret <<= 8;
 90                ret |= b;
 91            }
 92
 93            return ret;
 94
 95        }
 96
 97
 98        public static int Compare(IPRange x, IPRange y)
 99        {
100            if(x.Range == y.Range)
101                return 0;
102            else if(x.Range > y.Range)
103                return 1;
104            else return -1;
105        }
106
107    }
108
109    public class IPRangeManage
110    {
111        public IPRangeManage()
112        { }
113
114        private List< IPRange> _IPRangeList = new List< IPRange>();
115        private bool _NeedSort = true;
116
117        public void Add(IPRange ipRange)
118        {
119            _IPRangeList.Add(ipRange);
120            _NeedSort = true;
121        }
122
123        private void Sort()
124        {
125            if (_NeedSort)
126            {
127                _IPRangeList.Sort(new Comparison<IPRange>(IPRange.Compare));
128            }
129        }
130
131        public IPRange Search(string ipString)
132        {
133            ulong ip = IPRange.IP2A(ipString);
134
135            this.Sort();
136
137            foreach (IPRange ir in _IPRangeList)
138            {
139                if (ir.BeginIP <= ip && ir.EndIP >= ip)
140                {
141                    return ir;
142                }
143            }
144            return null;
145        }
146    }
147}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuyq11/archive/2007/08/19/1750195.aspx

相关文章推荐

校园IP查询系统.

  • 2015年05月18日 14:36
  • 26KB
  • 下载

IP查询及设置方法

  • 2015年08月07日 22:26
  • 525KB
  • 下载

结合Google Maps API和GeoIP/新浪/搜狐接口的IP地理信息可视化查询

网络上有很多提供IP地址查询的网站,输入IP地址,得到IP所在地的结果。本文实现一种更具特色的查询,将IP所在地直接标注在Google Maps上。 本文主要利用Google Maps JavaSc...

IP查询系统

  • 2014年08月19日 01:16
  • 1KB
  • 下载

活跃IP查询.rar

  • 2013年03月02日 21:02
  • 700KB
  • 下载

iOS- 网络开发GET请求和POST请求实现ip地址来源查询

一、Get请求与Post请求的区别 1、Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求 2、Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改 ...

域网IP查询

  • 2013年01月13日 16:46
  • 211KB
  • 下载

查询ip信息

  • 2014年01月08日 20:35
  • 55KB
  • 下载

nslookup工具查询域名服务器、IP、CNAME等详细用法

nslookup是站长较为常用的工具之一,它甚至比同类工具dig的使用人数更多,原因是它的运行环境是windows,并且不需要我们再另外安装什么东西。dig是在linux环境里运行的命令,不过也可以在...
  • dodott
  • dodott
  • 2016年07月11日 18:35
  • 3112

绿色IP查询工具

  • 2013年11月15日 09:31
  • 249KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ip查询
举报原因:
原因补充:

(最多只允许输入30个字)