C# 获取本机IP地址(IPv4和IPv6)攻略
在C#中,可以使用System.Net.NetworkInformation
命名空间下的类来获取本机的IP地址。以下是获取本机IP地址的完整攻略。
步骤1:导入命名空间
首先,需要在代码文件的顶部导入System.Net.NetworkInformation
命名空间,以便使用相关的类和方法。
using System.Net.NetworkInformation;
步骤2:获取本机IP地址(IPv4)
要获取本机的IPv4地址,可以使用NetworkInterface
类的GetAllNetworkInterfaces
方法来获取所有网络接口,然后遍历每个接口以获取其IP地址。
// 获取所有网络接口
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
// 遍历每个网络接口
foreach (NetworkInterface iface in interfaces)
{
// 过滤掉非活动的接口和回环接口
if (iface.OperationalStatus == OperationalStatus.Up && iface.NetworkInterfaceType != NetworkInterfaceType.Loopback)
{
// 获取接口的IP属性集合
IPInterfaceProperties ipProperties = iface.GetIPProperties();
// 遍历每个IP属性
foreach (UnicastIPAddressInformation ip in ipProperties.UnicastAddresses)
{
// 过滤掉非IPv4地址
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
// 输出IPv4地址
Console.WriteLine(\"IPv4 Address: \" + ip.Address.ToString());
}
}
}
}
步骤3:获取本机IP地址(IPv6)
要获取本机的IPv6地址,可以使用与获取IPv4地址类似的方法,只需将过滤条件更改为AddressFamily.InterNetworkV6
。
// 获取所有网络接口
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
// 遍历每个网络接口
foreach (NetworkInterface iface in interfaces)
{
// 过滤掉非活动的接口和回环接口
if (iface.OperationalStatus == OperationalStatus.Up && iface.NetworkInterfaceType != NetworkInterfaceType.Loopback)
{
// 获取接口的IP属性集合
IPInterfaceProperties ipProperties = iface.GetIPProperties();
// 遍历每个IP属性
foreach (UnicastIPAddressInformation ip in ipProperties.UnicastAddresses)
{
// 过滤掉非IPv6地址
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
{
// 输出IPv6地址
Console.WriteLine(\"IPv6 Address: \" + ip.Address.ToString());
}
}
}
}
示例说明
以下是两个示例说明,展示如何使用上述代码获取本机的IPv4和IPv6地址。
示例1:获取本机IPv4地址
using System;
using System.Net.NetworkInformation;
namespace IPAddressExample
{
class Program
{
static void Main(string[] args)
{
// 获取所有网络接口
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
// 遍历每个网络接口
foreach (NetworkInterface iface in interfaces)
{
// 过滤掉非活动的接口和回环接口
if (iface.OperationalStatus == OperationalStatus.Up && iface.NetworkInterfaceType != NetworkInterfaceType.Loopback)
{
// 获取接口的IP属性集合
IPInterfaceProperties ipProperties = iface.GetIPProperties();
// 遍历每个IP属性
foreach (UnicastIPAddressInformation ip in ipProperties.UnicastAddresses)
{
// 过滤掉非IPv4地址
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
// 输出IPv4地址
Console.WriteLine(\"IPv4 Address: \" + ip.Address.ToString());
}
}
}
}
}
}
}
输出结果:
IPv4 Address: 192.168.0.100
示例2:获取本机IPv6地址
using System;
using System.Net.NetworkInformation;
namespace IPAddressExample
{
class Program
{
static void Main(string[] args)
{
// 获取所有网络接口
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
// 遍历每个网络接口
foreach (NetworkInterface iface in interfaces)
{
// 过滤掉非活动的接口和回环接口
if (iface.OperationalStatus == OperationalStatus.Up && iface.NetworkInterfaceType != NetworkInterfaceType.Loopback)
{
// 获取接口的IP属性集合
IPInterfaceProperties ipProperties = iface.GetIPProperties();
// 遍历每个IP属性
foreach (UnicastIPAddressInformation ip in ipProperties.UnicastAddresses)
{
// 过滤掉非IPv6地址
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
{
// 输出IPv6地址
Console.WriteLine(\"IPv6 Address: \" + ip.Address.ToString());
}
}
}
}
}
}
}
输出结果:
IPv6 Address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
以上是获取本机IP地址(IPv4和IPv6)的完整攻略,通过遍历网络接口和IP属性,可以获取本机的所有IP地址。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 获取本机IP地址(IPv4和IPv6) - Python技术站