http://blog.163.com/ldy_3881685/blog/static/32380136200954112940184/

C#遍历局域网的几种方法及比较

2009-06-04 11:29:40|  分类: C#学习相关 |  标签: |字号大中小 订阅

扫描局域网IP列表的几种方法 很多软件都有获知局域网在线计算机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 root.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,则有个别计算机的名称会因超时而获得不到。

转载于:https://www.cnblogs.com/Z-Fire/articles/2879707.html

[转]C#遍历局域网的几种方法及比较相关推荐

  1. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析

    PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  2. php 解析java map,java_java遍历Map的几种方法分析,本文实例分析了java遍历Map的几 - phpStudy...

    java遍历Map的几种方法分析 本文实例分析了java遍历Map的几种方法.分享给大家供大家参考,具体如下: Java代码: Map map=new HashMap(); map.put(" ...

  3. js遍历对象的几种方法

    js遍历对象的几种方法 第一种: for......in const obj = {id:1,name:'zhangsan',age:18 }for(let key in obj){console.l ...

  4. python遍历数组的两种方法及将print的内容写入文件中

    python遍历数组的两种方法 第一种,最常用的,通过for in遍历数组 colours = ["red","green","blue"] ...

  5. 遍历Map的四种方法

    遍历Map的四种方法 public static void main(String[] args) { Map<String, String> map = new HashMap<S ...

  6. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析_php技巧

    本文实例分析了PHP遍历数组的三种方法及效率对比.分享给大家供大家参考.具体分析如下: 今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一 ...

  7. php 遍历 效率高,PHP遍历数组的三种方法及效率对比分析

    这篇文章主要介绍了PHP遍历数组的三种方法及效率对比,实例分析了foreach.while与for三种遍历数组的方法与相关的效率比对,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例分析了PHP遍 ...

  8. php高效遍历,PHP 遍历数组的三种方法及效率对比分析

    PHP 遍历数组的三种方法及效率对比分析 本文实例分析了 PHP 遍历数组的三种方法及效率对比分享给大家供大家参考具体分析如下: 今天有个朋友问我一个问题 php 遍历数组的方法, 告诉她了几个顺便写 ...

  9. python3(4)--- python遍历数组的两种方法

    python遍历数组的两种方法 第一种,最常用的,通过for in遍历数组.其实本质就是取出来的是这个数组或者列表中的元素,和角标无关. colours = ["red",&quo ...

最新文章

  1. php tp5生成条形码,thinkphp5 + barcode 生成条形码
  2. 【错误记录】FFmpeg 推流报错 ( FLV does not support sample rate 8000, choose from (44100, 22050, 11025) )
  3. 回顾我学过的编程语言
  4. 有关信号处理中的 窗函数
  5. Golang学习---常用库
  6. 动态生成的html元素无法调用js函数,如何确保动态生成的div在js函数被调用之前被加载到DOM中?...
  7. 通过telnet连接查看memcache服务器
  8. C/C++软件工程师就业求职手册学习笔记---第五章
  9. php话费充值接口对接,基于PHP的聚合数据手机话费充值API调用代码示例
  10. 苹果系统忘记登录密码
  11. ArcGIS产品---ArcGIS Enterprise概述
  12. 让SpringBoot不需要Controller、Service、DAO、Mapper,卧槽!这款工具
  13. linux ftok()
  14. List如何在遍历时删除元素
  15. 1.前端笔记之html
  16. C++ AMP实战:绘制曼德勃罗特集图像
  17. 回复审稿意见应该注意什么?
  18. 2021的最新操作系统知识梳理,建议收藏!
  19. MAC上配置搭配CH340/CH341 USB转串口芯片的Arduino
  20. 10.12黄金原油资讯直通车,黄金原油区间震荡后市操作建议

热门文章

  1. 关于ECS设计以及MVC分层设计和组件化设计的思考和总结(这个标题就问你长不长)
  2. UVa11464 - Even Parity(递推法)
  3. Bootstrap -- 插件: 按钮状态、折叠样式、轮播样式
  4. Tomcat 配置安装
  5. HTML5学习之语义化标签
  6. 在Sublime Text3中运行PHP代码
  7. [.NET] Rough Dependency Injection
  8. 运行时修改数据库连接字符串(ConnectionString)
  9. SL400之换轴篇@屏轴门
  10. 不是多家族媒体集的一部分,可用bakup with format来构造新的媒体集.