翰文个人计算机学习网
  • 翰文快讯
  • 翰文PC快讯
  • 综合软件区
  • 操作系统
  • 注册表解析
  • Windows系列
  • Unix/Linux
  • 其他系统
  • 应用软件
  • 微软MS Office
  • WPS Office
  • 多媒体软件
  • 图像处理
  • Photoshop
  • Painter
  • Illustrator
  • CorelDRAW
  • 三维空间
  • AutoCAD
  • 3DMAX
  • 3DMAYA
  • 硬件资源
  • 攒机指南
  • 硬件超频
  • 维修指南
  • 网络资源
  • 在线通讯
  • 网上冲浪
  • 浏览器中心
  • 网络故障解析
  • 病毒资料
  • 病毒通报
  • 病毒防治
  • 病毒常识
  • 黑客技巧
  • SQL/MySQL
  • Oracle
  • Delphi
  • 编程资源
  •  C/C#/C++/VC++/VC.NET
  •  Basic/VB/VB.NET/VBScript
  •  FoxBasic/FoxPro/VF/VF.NET
  •  Java/JavaScript
  • PowerBuilder
  • 热门词:
  • 翰文计算机学习网首页
  • >
  • C/C#/C++/VC++/VC.NET
  • >
  • .Net中扫描局域网IP列表的几种方法
  • .Net中扫描局域网IP列表的几种方法

  • 资源来源:
  • HW-PCS.ORG
  • 资源作者:
  • 翰文计算机学习网
  • 人气指数:
  • [4105]
  •   很多软件都有获知局域网在线计算机IP的功能,但是在.net怎么实现呢,有好多方法,下面我给大家介绍几种,供大家参考。

      1、微软社区上介绍了使用Active Directory 来遍历局域网
      利用DirectoryEntry组件来查看网络
    网址:http://www.microsoft.com/china/community/program/originalarticles/techdoc/DirectoryEntry.mspx

    private void EnumComputers()
     {
      using(DirectoryEntry root = new DirectoryEntry(“WinNT:“))
      {
       foreach(DirectoryEntry domain in .Children)
       {
        Console.WriteLine(“Domain | WorkGroup: “+domain.Name);
        foreach(DirectoryEntry computer in domain.Children)
      {
       Console.WriteLine(“Computer: “+computer.Name);
      }
      }
     }
    }

      效果评价:速度慢,效率低,还有一个无效结果 Computer: Schema 使用的过程中注意虑掉。

      2、利用Dns.GetHostByAddress和IPHostEntry遍历局域网

    private void EnumComputers()
    {
    for (int i = 1; i 〈= 255; i++)
    {
     string scanIP = “192.168.0.“ + i.ToString();

     IPAddress myScanIP = IPAddress.Parse(scanIP);

     IPHostEntry myScanHost = null;

     try
     {
      myScanHost = Dns.GetHostByAddress(myScanIP);
     }

     catch
     {
      continue;
     }

     if (myScanHost != null)
     {
      Console.WriteLine(scanIP+“|“+myScanHost.HostName);
     }
     }
    }

      效果评价:效率低,慢,不是一般的慢。

      3、使用System.Net.NetworkInformation.Ping来遍历局域网

    private void EnumComputers()
    {
    try
    {
      for (int i = 1; i 〈= 255; i++)
      {
       Ping myPing;
       myPing = new Ping();
       myPing.PingCompleted += new PingCompletedEventHandler(_myPing_PingCompleted);

       string pingIP = “192.168.0.“ + i.ToString();
       myPing.SendAsync(pingIP, 1000, null);
      }
    }
    catch
    {
    }
    }

    PRIVATE void _myPing_PingCompleted(object sender, PingCompletedEventArgs e)
    {
     if (e.Reply.Status == IPStatus.Success)
     {
      Console.WriteLine(e.Reply.Address.ToString() + “|“ + Dns.GetHostByAddress(IPAddress.Parse(e.Reply.Address.ToString())).HostName);
     }
    }

      效果评价:快,效率高,如果只取在线的IP,不取名,会更快。

      需要注意的是取名称如果用Dns.GetHostByAddress取名称,结果虽然正确,但VS2005会提示该方法已过时,但仍能使用。

      如果用它推荐的替代方法Dns.GetHostEntry,则有个别的名称会因超时而获得不到。

    感谢您对翰文计算机学习网的支持

  • 关于我们
  • 联系方式
  • 成功案例
  • 技术报价
  • RSS索引
  • 网站地图
  • 翰文电脑学习网
  • MSN:LNDDYGYC9@HOTMAIL.COM Powered by 翰文个人计算机学习网 版权所有,未经允许不得转载
    ICP备案号码:[沪ICP备12020678号] Copyright 2008-2020 HW-PCS.ORG, All Rights Reserved.