在C#开发中,我们经常需要获取本地机器的IP地址。本文将整理C#中获取IP地址的方法,并且详细介绍如何获取IPv4和IPv6地址。
获取IPv4地址
方法一:使用Dns.GetHostEntry
方法
using System.Net;
string hostname = Dns.GetHostName();
IPHostEntry ipEntry = Dns.GetHostEntry(hostname);
IPAddress[] addresses = ipEntry.AddressList;
foreach (IPAddress address in addresses)
{
if (address.AddressFamily == AddressFamily.InterNetwork) // IPv4地址
{
Console.WriteLine(address.ToString());
}
}
方法二:使用NetworkInterface
类
using System.Net.NetworkInformation;
foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces())
{
if (networkInterface.OperationalStatus == OperationalStatus.Up)
{
IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
foreach (UnicastIPAddressInformation ipAddress in ipProperties.UnicastAddresses)
{
if (ipAddress.Address.AddressFamily == AddressFamily.InterNetwork) // IPv4地址
{
Console.WriteLine(ipAddress.Address.ToString());
}
}
}
}
获取IPv6地址
方法一:使用Dns.GetHostEntry
方法
using System.Net;
string hostname = Dns.GetHostName();
IPHostEntry ipEntry = Dns.GetHostEntry(hostname);
IPAddress[] addresses = ipEntry.AddressList;
foreach (IPAddress address in addresses)
{
if (address.AddressFamily == AddressFamily.InterNetworkV6) // IPv6地址
{
Console.WriteLine(address.ToString());
}
}
方法二:使用NetworkInterface
类
using System.Net.NetworkInformation;
foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces())
{
if (networkInterface.OperationalStatus == OperationalStatus.Up)
{
IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
foreach (UnicastIPAddressInformation ipAddress in ipProperties.UnicastAddresses)
{
if (ipAddress.Address.AddressFamily == AddressFamily.InterNetworkV6) // IPv6地址
{
Console.WriteLine(ipAddress.Address.ToString());
}
}
}
}
以上方法可以获取到当前机器的IPv4和IPv6地址。通过使用不同的方法,您可以根据自己的需求选择适合的获取IP地址的方法。
希望本文对您有所帮助!如有任何疑问或建议,请在评论区留言。感谢阅读!
本文来自极简博客,作者:梦幻独角兽,转载请注明原文链接:获取IP地址方法整理(C