我使用此hostInfo.AddressList
获取机器IP地址。它以字母格式(例如ff80::c9c9:b2af:aa0f:e2d2%12
)返回它,我想要将其格式化为IP地址格式(数字)。
我正在使用C#、. net 3.5。
您提供的格式是表示IPv6地址的正确方法。没有用于表示IPv6地址的A.B.C.D格式。
发生的事情是您正在获取IPv4和IPv6的地址列表。您正在寻找IPv4的。
string GetFirstIPv4Address()
{
IPAddress[] addressList = Dns.GetHostAddresses(hostname);
foreach (IPAddress ip in addressList)
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
//This is an IPv4 address
return ip.ToString();
}
}
return "127.0.0.1";
}
That 是 IP地址格式,特别是IPv6 IP地址。听起来您想要一个IPv4地址,但是如果不知道网络的配置,就无法将IPv6地址下转换为IPv4地址。
如果您的主机有一个v6地址,建议您坚持使用。您当然不应该尝试在应用程序级别下转换地址。