【问题标题】:Formatting IP address in C#在 C# 中格式化 IP 地址
【发布时间】:2010-06-22 17:30:06
【问题描述】:

我使用这个hostInfo.AddressList 来获取机器IP 地址。它以字母格式返回它,例如ff80::c9c9:b2af:aa0f:e2d2%12,我想要的是将其格式化为IP地址格式(数字)。

我正在使用 C#,.net 3.5。

【问题讨论】:

  • 您能否发布您现在拥有的代码?

标签: c# ip-address


【解决方案1】:

您提供的格式是表示 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";
}

【讨论】:

    【解决方案2】:

    一种IP地址格式,特别是IPv6 IP地址。听起来您想要一个 IPv4 地址,但在不知道您的网络是如何配置的情况下,无法将 IPv6 地址下转换为 IPv4 地址。

    如果您的主机有 v6 地址,我建议您坚持使用它。您当然不应该尝试在应用程序级别下转换地址。

    【讨论】:

    • 所以基本上,在这种情况下根本没有办法获得 IPv4 格式?
    • 不,IPv6 地址没有点分四边形形式,因为 IPv6 地址不是 32 位的。
    猜你喜欢
    • 2011-11-15
    • 2023-03-10
    • 2017-11-23
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 2010-10-25
    • 2013-04-11
    • 1970-01-01
    相关资源
    最近更新 更多