手机版 收藏 导航

.NET 获取 IP 地址的多种方式_在 .NET 中动态获取 IP 地址的技巧

原创   www.link114.cn   2023-12-10 13:33:38

.NET 获取 IP 地址的多种方式_在 .NET 中动态获取 IP 地址的技巧

这是一种最简单直接的方式。我们可以使用以下代码来获取本机的 IP 地址:


IPAddress[] addresses = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
foreach (var address in addresses)
{
    if (address.AddressFamily == AddressFamily.InterNetwork)
    {
        Console.WriteLine(address.ToString());
    }
}

这段代码首先获取本机的主机名,使用 Dns.GetHostEntry 方法获取与该主机名关联的所有 IP 地址,遍历这些地址并输出 IPv4 地址。

除使用 Dns 类,我们还可以使用 System.Net.NetworkInformation.NetworkInterface 类来获取 IP 地址。这种方式可以更精确地获取特定网卡的 IP 地址。例如:


foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
    if (ni.OperationalStatus == OperationalStatus.Up)
    {
        foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
        {
            if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
            {
                Console.WriteLine(ip.Address.ToString());
            }
        }
    }
}

该代码遍历所有可用的网络接口,并输出每个接口的 IPv4 地址。需要注意的是,这种方式可以获取到更多的网络信息,如子网掩码、默认网关等。

你已经知道 IP 地址的字符串形式,可以直接使用 IPAddress.Parse 方法将其转换为 IPAddress 对象。例如:


string ipString = "192.168.1.100";
IPAddress ip = IPAddress.Parse(ipString);
Console.WriteLine(ip.ToString());

这种方式适用于你已经知道 IP 地址的情况,比如从配置文件或者数据库中读取 IP 地址。

有时我们需要动态获取 IP 地址,比如在 web 应用程序中,我们需要知道用户的 IP 地址。这种情况下,可以使用以下代码:


string userIpAddress = HttpContext.Current.Request.UserHostAddress;
Console.WriteLine(userIpAddress);

这段代码可以在 ASP.NET 应用程序中获取用户的 IP 地址。需要注意的是,这种方式只能获取到用户的公网 IP 地址,用户使用代理服务器,则可能无法获取到真实的 IP 地址。

除上述方法,我们还可以使用第三方 API 来获取 IP 地址。一些常见的 IP 地址查询服务包括 ipifyipstack 等。使用这些服务可以更准确地获取到用户的 IP 地址,但需要注意服务的使用限制和收费情况。

在 .NET 开发中有多种方式可以获取 IP 地址,每种方式都有自己的应用场景。开发者可以根据具体需求选择合适的方式。无论选择哪种方式,都要注意处理异常情况,以确保应用程序的健壮性。