用C#获取局域网内所有机器
作者:作者不详  发布日期:2011/06/12 17:46:58
用C#获取局域网内所有机器

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


出处:http://lifuyun.cnblogs.com


本文来源:



C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


上一篇 下一篇