首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>WINFORM>.Net中实现扫描局域网IP列表的几种方法
.Net中实现扫描局域网IP列表的几种方法
来源: 发布时间:2007-12-29 发布人: 浏览: 人次   字体: [ ]  

.Net中扫描局域网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, 
1000null);
   }
 }
 
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,则有个别计算机的名称会因超时而获得不到。 


相 关 文 章   发布商链接
·C#的简单图片透明处理代码以供参考
·C#实现在Windows应用程序中支持拖拽...
·使用C#制做进程监视器,可查看进程的...
·winfrom让弹出的MessageBox在指定时...
·vs2005实现关闭窗体的代码
·如何实现winform自动点击webbrowser...
·WinForm实现注册热键的代码
·Winform获取弹窗消息框中的文字代码
·winform中通过设置钩子监视鼠标移动
·winform中实现拖动图片的例子
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·解决winform得不到GridView控
·winform实现窗体嵌入并操作可
·winform实现的仿Msn移动提示...
·WinForm实现渐变窗体效果代码
·winform实现类似QQ滑动面板的
·asp.net中当按下回车键时响应
·WinForm中TextBox控件循环自...
·winform如何保持TreeView节点
·图解winform用户控件添加自定
·dataset.GetChanges()为什么...
·winform中DatagridView单元格
·WebBrowser中html元素如何触...
·winform中如何获得TextBox光...
·winform中通过设置钩子监视鼠
·Winform获取弹窗消息框中的文
热 门 文 章
·asp.NET实现视频播放器功能代...
·winform中DatagridView单元格...
·在.net中利用webbrowser控件...
·使用C#制做进程监视器,可查看...
·WinForm编程开发实用技巧14则
·C#的简单图片透明处理代码以...
·如何实现winform自动点击webb...
·winform实现类似QQ滑动面板的...
·winform如何保持TreeView节点...
·如何做winform启动页面?
·图解winform用户控件添加自定...
·winform中如何获得TextBox光...
·Winform窗体之间传值的几种方...
·DataGridView控件如何实现分...
·asp.net中当按下回车键时响应...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .