使用C#编写查询IP段功能的程序

豆豆网   技术应用频道   2007年11月20日  【字号: 收藏本文

内容摘要:本文将通过一个实例来向大家讲解如何使用C#来编写一个具备查询IP段功能的小程序。

  本文将通过一个实例来向大家讲解如何使用C#来编写一个具备查询IP段功能的小程序。

  主要功能:查询一个IP所有的IP段.

  关键:从Byte数组到ulong的转换出来的数字和 IPAddress.Address 返回值的是不一样的.

以下是引用片段:
  usingSystem;
  usingSystem.Collections.Generic;
  usingSystem.Text;
  usingSystem.Net;
  namespaceIPUtility
  {
  classProgram
  {
  staticvoidMain(string[]args)
  {
  IPRangeManageirm=newIPRangeManage();
  irm.Add(newIPRange("石家庄","219.148.24.0","219.148.63.255"));
  irm.Add(newIPRange("石家庄","222.222.0.0","222.222.63.255"));
  irm.Add(newIPRange("唐山","219.148.64.0","219.148.79.255"));
  irm.Add(newIPRange("保定","219.148.20.0","219.148.23.255"));
  Console.WriteLine(irm.Search("219.148.56.3").Name);
  Console.ReadLine();
  }
  }
  publicclassIPRange
  {
  privatestring_Name=string.Empty;
  privateulong_BeginIP=0;
  privateulong_EndIP=Int32.MaxValue;
  /**//// 
  ///IP段名称
  /// 
  publicstringName
  {
  get{return_Name;}
  set{_Name=value;}
  }
  /**//// 
  ///?始IP
  /// 
  publiculongBeginIP
  {
  get{return_BeginIP;}
  set{_BeginIP=value;}
  }
  /**//// 
  ///?束IP
  /// 
  publiculongEndIP
  {
  get{return_EndIP;}
  set{_EndIP=value;}
  }
  /**//// 
  ///此IP段的范?
  /// 
  publiculongRange
  {
  get
  {
  returnEndIP-BeginIP;
  }
  }
  publicIPRange(stringname,stringipBegin,stringipEnd)
  {
  this.Name=name;
  this.BeginIP=IP2A(ipBegin);
  this.EndIP=IP2A(ipEnd);
  }
  publicstaticulongIP2A(stringip)
  {
  byte[]bytes=IPAddress.Parse(ip).GetAddressBytes();
  ulongret=0;
  foreach(bytebinbytes)
  {
  ret<<=8;
  ret|=b;
  }
  returnret;
  }
  publicstaticintCompare(IPRangex,IPRangey)
  {
  if(x.Range==y.Range)
  return0;
  elseif(x.Range>y.Range)
  return1;
  elsereturn-1;
  }
  }
  publicclassIPRangeManage
  {
  publicIPRangeManage()
  {}
  privateList<IPRange>_IPRangeList=newList<IPRange>();
  privatebool_NeedSort=true;
  publicvoidAdd(IPRangeipRange)
  {
  _IPRangeList.Add(ipRange);
  _NeedSort=true;
  }
  privatevoidSort()
  {
  if(_NeedSort)
  {
  _IPRangeList.Sort(newComparison(IPRange.Compare));
  }
  }
  publicIPRangeSearch(stringipString)
  {
  ulongip=IPRange.IP2A(ipString);
  this.Sort();
  foreach(IPRangeirin_IPRangeList)
  {
  if(ir.BeginIP<=ip&&ir.EndIP>=ip)
  {
  returnir;
  }
  }
  returnnull;
  }
  }
  }

  所有代码就这么多,是不是很简单啊?相信大家都能够看懂。

责编:豆豆技术应用

正在加载评论...