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

2016-02-19 13:46 36 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享使用C#编写查询IP段功能的程序,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  主要功能:查询一个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;
  }
  }
  }

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)  所有代码就这么多,是不是很简单啊?相信大家都能够看懂。

来源:http://www.tulaoshi.com/n/20160219/1605194.html

延伸阅读
介绍 本文的目的是引导SmartPhone编程的初学者进入SmartPhone世界,以及学会如何使用C#编写SmartPhone程序。本文首先介绍了什么是SmartPhone,以及SmartPhone的一些特性和用于编程的API。为了更好地掌握如何使用C#编写SmartPhone程序,在本文还提供了一个使用C#编写的简单的SmartPhone程序的例子,读者可以通过这个例子快速地掌握如何...
许多软件都有自动关机功能,特别是在长时间下载的时候,这个功能可是使你不用以守候在计算机前面,而电脑却能按照您事先的设定自动关闭。现在我们用visual C#来编写一个多功能的关机程序。该程序具有:定时关机、倒计时关机、关机提醒、系统信息获取等四项功能, 可设定关机时间精确到秒。并且让你很快掌握Visual C#中对API的操作程序。 一. ...
在我的上一篇文章《C#中使用XML读取XML》中和大家讨论了如何使用.NET Framework中提供的类在C#中读取XML以及读取的一些相关概念,那么今天就说一说如何在C#中编写XML文档,起初我觉得用编程的方式去编写XML简直就是自讨苦吃,后来想想还是觉得挺有用的,我想Microsoft那班家伙能编出这些类来应该不是仅仅为了向比尔i盖茨交差吧!至于它的用...
    最近在网上不断的看到有人问如何用BCB的TServerSocket和TClientSocket进行编程的问题,所以决定把我的一些编程经验告诉给大家,让大家能够尽快的把握他们的用法。 首先要讲一下他们的一些设置(属性): TServerSocket 的几个属性 Active          &...
  一直以来我们都希望我们的代码在不影响可读、可维护、可移植等条件下尽可能的短小精悍。       对于编程发烧友来说将代码的精简做极致,往往会比较变态,今天我也变了一把,时刻准备着各位拍砖。       事情是这样的,有个朋友说他写了个彩票机先程序,然后群里开始...

经验教程

44

收藏

86
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部