C_获取局域网的所有机器的IP和机器名[1].doc
### C# 获取局域网内所有机器的IP和机器名 #### 一、概述 本文主要介绍如何使用C#语言实现获取局域网内所有计算机的名称,并进一步获取这些计算机的IP地址。此方法适用于局域网内的网络管理或者自动化运维场景。文中提到的核心思路是先利用`net view`命令获取局域网内的计算机名称列表,然后通过各种方法获取这些计算机的具体IP地址。 #### 二、获取计算机名称列表 1. **命令行获取计算机名称列表** - 使用`net view`命令可以查看当前计算机所在的局域网内所有可见的计算机名称。 - 可以将`net view`命令的输出结果重定向到一个文本文件中进行后续处理。 ```plaintext net view > c:\qw.txt ``` 2. **C#读取文本文件** - 在C#中可以通过`StreamReader`类来读取文件内容。 - 下面是一个简单的示例代码,展示了如何读取包含计算机名称的文本文件,并将其中以“\\”开头的记录存储到`ArrayList`中。 ```csharp private void button1_Click(object sender, System.EventArgs e) { this.openFileDialog1 = new OpenFileDialog(); if (this.openFileDialog1.ShowDialog() == DialogResult.OK) { string str_text = this.openFileDialog1.FileName; StreamReader objReader = new StreamReader(str_text); string sLine = ""; ArrayList arrText = new ArrayList(); while ((sLine = objReader.ReadLine()) != null) { if (sLine.StartsWith("\\")) { arrText.Add(sLine); } } objReader.Close(); foreach (string str_out in arrText) { this.listBox1.Items.Add(str_out); } } } ``` #### 三、运行命令并获取输出结果 - 上述代码中还提供了如何在C#中运行外部命令(如`net view`)并获取其输出的方法。 ```csharp private void button3_Click(object sender, System.EventArgs e) { System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(); psi.FileName = @"C:\WINDOWS\system32\cmd.exe"; psi.Arguments = @"/c net view > c:\\qw.txt"; psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; System.Diagnostics.Process.Start(psi); } ``` - 这段代码的关键在于使用`/c`参数来指定命令执行完成后立即退出,避免了打开一个新的命令行窗口。 #### 四、获取IP地址及其他相关信息 - 除了获取计算机名称外,还可以使用以下方法获取其他相关信息: - **获取服务器电脑名**:`Page.Server.MachineName` - **获取用户信息**:`Page.User` - **获取客户端电脑名**:`Page.Request.UserHostName` - **获取客户端电脑IP**:`Page.Request.UserHostAddress` - **在网络编程中的通用方法**: - **获取当前电脑名**:`System.Net.Dns.GetHostName()` - **根据电脑名取出全部IP地址**:`System.Net.Dns.Resolve(电脑名).AddressList` - **根据IP地址取出电脑名**:`System.Net.Dns.Resolve(IP地址).HostName` - **系统环境类的通用属性**: - **当前电脑名**:`System.Environment.MachineName` - **当前电脑所属网域**:`System.Environment.UserDomainName` - **当前电脑用户**:`System.Environment.UserName` #### 五、实例代码展示 - **通过IP获取主机名**: ```csharp using System.Net; IPHostEntry remoteHost = Dns.GetHostByAddress("59.69.139.32"); string hostName = remoteHost.HostName; ``` - **通过主机名获取IP**: ```csharp IPHostEntry remoteHost = Dns.GetHostByName("zhanghua"); MessageBox.Show(remoteHost.AddressList[0].ToString()); ``` - **获取本地IP**: ```csharp string localIP = Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString(); IPAddress ipAddress = new IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address); ``` 以上内容详细介绍了如何使用C#获取局域网内所有机器的名称及IP地址,同时还提供了相关的代码示例。这些方法对于开发网络管理工具或进行网络监控都非常有用。
剩余6页未读,继续阅读
- 粉丝: 9
- 资源: 32
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助