WinForm中获取本机IP

本文介绍了一种使用C#代码获取本地计算机IP地址的方法。通过调用System.Net.Dns.GetHostEntry方法并结合Environment.MachineName属性,可以有效地显示当前系统的第一个IP地址。
            System.Net.IPHostEntry iph = System.Net.Dns.GetHostEntry(Environment.MachineName);           
            MessageBox.Show( iph.AddressList[0].ToString()); 
在 C# WinForm 应用程序中,可以通过使用 `System.Management` 命名空间中的类来获取本机IP 地址和 MAC 地址。以下是一个完整的实现方法: ### 获取本地 IP 地址和 MAC 地址 ```csharp using System; using System.Management; using System.Windows.Forms; public partial class Form1 : Form { public Form1() { InitializeComponent(); GetNetworkInfo(); } private void GetNetworkInfo() { ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection nics = mc.GetInstances(); foreach (ManagementObject nic in nics) { if (Convert.ToBoolean(nic["IPEnabled"]) == true) { string mac = nic["MacAddress"].ToString(); // MAC地址 string ip = (nic["IPAddress"] as string[])[0]; // IP地址 string ipSubnet = (nic["IPSubnet"] as string[])[0]; // 子网掩码 string ipGateway = (nic["DefaultIPGateway"] as string[])[0]; // 默认网关 // 输出到文本框或控制台 textBoxNetworkInfo.AppendText($"MAC 地址: {mac}\n"); textBoxNetworkInfo.AppendText($"IP 地址: {ip}\n"); textBoxNetworkInfo.AppendText($"子网掩码: {ipSubnet}\n"); textBoxNetworkInfo.AppendText($"默认网关: {ipGateway}\n"); textBoxNetworkInfo.AppendText(new string('-', 40) + "\n"); } } } } ``` ### 关键代码说明 - **ManagementClass**:用于访问 WMI(Windows Management Instrumentation)中的类,这里使用的是 `Win32_NetworkAdapterConfiguration`,它提供了网络适配器的配置信息[^1]。 - **ManagementObjectCollection**:获取所有网络适配器的实例。 - **IPEnabled**:检查网络适配器是否启用 IP 地址分配,仅处理启用的适配器。 - **MacAddress**:获取网络适配器的 MAC 地址[^1]。 - **IPAddress**:获取网络适配器的 IP 地址,通常返回的是字符串数组,因此需要取第一个元素。 - **IPSubnet**:获取网络适配器的子网掩码信息[^1]。 - **DefaultIPGateway**:获取网络适配器的默认网关地址[^1]。 ### 注意事项 - 在项目中使用 `System.Management` 命名空间时,需要确保项目引用了 `System.Management.dll`。 - 如果目标计算机上有多个网络适配器(例如有线、无线、虚拟适配器等),该代码会遍历所有启用 IP 的适配器并输出相关信息。 - 如果只需要获取当前活动的网络连接(例如有线连接),可以通过进一步筛选 `nic["Description"]` 或其他属性来实现。 ### 完整的 WinForm 示例 在 WinForm 中,可以将结果输出到 `TextBox` 控件中,确保 `TextBox` 的 `Multiline` 属性设置为 `true`,以便显示多行内容。 ```csharp // 在设计器中添加一个 TextBox 控件,命名为 textBoxNetworkInfo private void GetNetworkInfo() { ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection nics = mc.GetInstances(); foreach (ManagementObject nic in nics) { if (Convert.ToBoolean(nic["IPEnabled"]) == true) { string mac = nic["MacAddress"].ToString(); string ip = (nic["IPAddress"] as string[])[0]; textBoxNetworkInfo.AppendText($"MAC 地址: {mac}\n"); textBoxNetworkInfo.AppendText($"IP 地址: {ip}\n"); textBoxNetworkInfo.AppendText(new string('-', 40) + "\n"); } } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值