首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#网络编程

使用C#获取局域网内所有机器

减小字体 增大字体 作者:不详  来源:转载  发布时间:2010-08-14 15:39:00

一直想开发一个局域网机器管理软件,但获得局域网内的所有机器却是很困难,在网上搜索到一个简单的方法,其原理很简单,在cmd.exe下面ping一下几台机,然后用arp -a命令查看一下,这种方式比开多线程去循环扫描的方式来的简单而有效。

//首先来个循环ping一下那个网段的主机。

//其次用以下的函数去获取所有的局域网内有响应的ip地址列表

public static ArrayList GetAllLocalMachines()
{

Process p = new Process();

p.StartInfo.FileName = "cmd.exe";

p.StartInfo.UseShellExecute = false;

p.StartInfo.RedirectStandardInput = true;

p.StartInfo.RedirectStandardOutput = true;

p.StartInfo.RedirectStandardError = true;

p.StartInfo.CreateNoWindow = true;

p.Start(); p.StandardInput.WriteLine("arp -a");

p.StandardInput.WriteLine("exit");

ArrayList list = new ArrayList();

StreamReader reader = p.StandardOutput;

string IPHead = Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString().Substring(0, 3);

for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())

{

           line = line.Trim();

           if (line.StartsWith(IPHead) && (line.IndexOf("dynamic") != -1))
           {

                  string IP = line.Substring(0, 15).Trim();
                  string Mac = line.Substring(line.IndexOf("-") - 2, 0x11).Trim();
                  LocalMachine localMachine = new LocalMachine();
                  localMachine.MachineIP = IP;
                  localMachine.MachineMAC = Mac;
                  localMachine.MachineName = "";
                  list.Add(localMachine);
           }
}
return list;


本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.