用C#获取局域网内所有机器
来源:互联网 发布:什么是挂机软件 编辑:程序博客网 时间:2024/06/09 22:29
介绍之前首先推荐一个程序员专用搜索引擎-http://www.openso.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;
}
原理其实很简单,在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;
}
0 0
- 用C#获取局域网内所有机器
- 用C#获取局域网内所有机器
- 用C#获取局域网内所有机器
- 用C#获取局域网内所有机器
- 用C#获取局域网内所有机器
- 用C#获取局域网内所有IP方法研究
- C#获取局域网内所有数据库服务器
- 获取局域网内所有IP
- 获取局域网内机器名
- c#获取所有局域网IP
- 获取局域网内所有(数据库)SQLServer机器名和实例名
- 获取局域网内所有网络设备MAC地址
- 获取局域网内所有的数据库实例
- java获取局域网内所有ip信息
- Delphi 获取局域网内的机器名
- C#获取局域网内所有的ip及对应的MAC
- 获取局域网内所有可用的SQL Server服务器列表
- DOS获取局域网内所有正在使用的ip地址
- Struts2 拦截器中实现对数据进行数据库操作
- Ubuntu12.04增加屏幕分辨率选项
- Eclipse 3.7手工安装Maven2的插件(包含POM图形编辑工具)
- 查找文件位置的方法-find,grep,locate
- Spark(1)
- 用C#获取局域网内所有机器
- lua学习笔记二--函数
- Spring3.1包详解与依赖关系
- 侧滑(以Activity为页面)
- [DUBBO] Decode rpc invocation failed: null, dubbo version: 2.8.4, current host: 127.0.0.1
- 关于Android中MD5加密算法
- 查漏补缺——表达式
- Java NIO Path
- 用js给enter键添加事件