【发布时间】:2010-06-22 17:30:06
【问题描述】:
我使用这个hostInfo.AddressList 来获取机器IP 地址。它以字母格式返回它,例如ff80::c9c9:b2af:aa0f:e2d2%12,我想要的是将其格式化为IP地址格式(数字)。
我正在使用 C#,.net 3.5。
【问题讨论】:
-
您能否发布您现在拥有的代码?
标签: c# ip-address
我使用这个hostInfo.AddressList 来获取机器IP 地址。它以字母格式返回它,例如ff80::c9c9:b2af:aa0f:e2d2%12,我想要的是将其格式化为IP地址格式(数字)。
我正在使用 C#,.net 3.5。
【问题讨论】:
标签: c# ip-address
您提供的格式是表示 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";
}
【讨论】:
那是一种IP地址格式,特别是IPv6 IP地址。听起来您想要一个 IPv4 地址,但在不知道您的网络是如何配置的情况下,无法将 IPv6 地址下转换为 IPv4 地址。
如果您的主机有 v6 地址,我建议您坚持使用它。您当然不应该尝试在应用程序级别下转换地址。
【讨论】: