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

北大青鸟大学城校区logo 北大青鸟大学城校区
招生简章校园环境师资力量就业明星招生问答软件工程师北京大学学历学员项目联系我们 报名通道

免费在线咨询通道>>

免费在线报名通道>>

北大青鸟报名电话
当前位置:北大青鸟 > 软件教程 > .net教程 >

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

标签:   分类:.net教程


    原理其实很简单,在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;

    }


若有疑问请拨打北大青鸟咨询热线:010-80146691或点击免费在线咨询!
  • xml地图 网站地图 招生简章 合作企业 学员项目 联系我们
  • 关闭窗口