c# 获得本地ip地址的三种方法

1.通过Dns类获取本地ip地址

使用Dns类可以很方便地获取本地ip地址。Dns类是System.Net命名空间下的一个类,它提供了用于解析和查询DNS主机名的方法和属性。在C#中,我们可以使用Dns类的GetHostEntry方法来获取本地主机的ip地址。

示例代码:

using System;

using System.Net;

class Program

{

static void Main()

{

try

{

// 获取本地主机名

string hostName = Dns.GetHostName();

// 获取主机的IP地址列表

IPHostEntry entry = Dns.GetHostEntry(hostName);

foreach (IPAddress address in entry.AddressList)

{

Console.WriteLine("IP Address: " + address.ToString());

}

}

catch (Exception ex)

{

Console.WriteLine("An error occurred: " + ex.Message);

}

}

}

在上面的示例代码中,我们首先通过Dns.GetHostName方法获取本地主机名,然后使用该主机名调用Dns.GetHostEntry方法获取主机的IP地址列表。IPHostEntry类的AddressList属性返回一个IPAddress类型的数组,表示本地主机的IP地址列表。我们可以遍历这个数组,打印出每个IP地址。

2.使用NetworkInterface类获取本地ip地址

NetworkInterface类是System.Net.NetworkInformation命名空间下的一个类,它提供了对网络接口的信息的访问。在C#中,我们可以使用NetworkInterface类的GetAllNetworkInterfaces方法来获取本地主机的网络接口信息,然后可以从每个网络接口中获取相应的IP地址。

示例代码:

using System;

using System.Net.NetworkInformation;

class Program

{

static void Main()

{

try

{

// 获取本地主机的网络接口信息

NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

foreach (NetworkInterface networkInterface in interfaces)

{

// 获取网络接口的IP地址信息

IPInterfaceProperties properties = networkInterface.GetIPProperties();

foreach (UnicastIPAddressInformation ipAddress in properties.UnicastAddresses)

{

Console.WriteLine("IP Address: " + ipAddress.Address.ToString());

}

}

}

catch (Exception ex)

{

Console.WriteLine("An error occurred: " + ex.Message);

}

}

}

在上面的示例代码中,我们先使用NetworkInterface.GetAllNetworkInterfaces方法获取本地主机的网络接口信息,然后遍历每个网络接口,使用NetworkInterface.GetIPProperties方法获取网络接口的IP地址信息。IPInterfaceProperties类的UnicastAddresses属性返回一个UnicastIPAddressInformationCollection类型的集合,表示网络接口的单播(单点对点)IP地址列表。我们可以遍历这个集合,打印出每个IP地址。

3.使用WMI查询获取本地ip地址

WMI(Windows Management Instrumentation)是Windows操作系统的一种管理技术,它提供了一组API用于管理和监控Windows系统。在C#中,我们可以使用WMI查询获取本地主机的IP地址信息。

示例代码:

using System;

using System.Management;

class Program

{

static void Main()

{

try

{

// 创建WMI查询语句

string query = "SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'";

// 创建WMI查询对象

ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

// 获取查询结果

ManagementObjectCollection collection = searcher.Get();

foreach (ManagementObject obj in collection)

{

string[] addresses = (string[])obj["IPAddress"];

foreach (string address in addresses)

{

Console.WriteLine("IP Address: " + address);

}

}

}

catch (Exception ex)

{

Console.WriteLine("An error occurred: " + ex.Message);

}

}

}

在上面的示例代码中,我们使用WMI查询语句"SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'"获取本地主机的IP地址信息。然后使用ManagementObjectSearcher类的Get方法获取查询结果。查询结果是一个ManagementObjectCollection类型的集合,每个集合元素都表示一个网络适配器的配置信息。我们可以遍历这个集合,获取每个网络适配器的IP地址信息。

总结

通过Dns类、NetworkInterface类和WMI查询,我们可以使用不同的方法获取本地主机的IP地址信息。其中,Dns类是最简单和常用的方法,它通过解析主机名来获取IP地址;NetworkInterface类提供了对网络接口的信息的更详细访问,可以获取网络接口的多个IP地址;WMI查询是基于Windows系统的管理技术,可以获取更多系统级别的信息。根据具体的需求,我们可以选择合适的方法来获取本地IP地址。

后端开发标签