格式化C#中的IP地址

问题描述 投票:2回答:2

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

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

c# ip-address
2个回答
6
投票

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

4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.