【问题标题】:To get current ip address in c# from client side从客户端获取 C# 中的当前 IP 地址
【发布时间】:2018-10-09 09:56:27
【问题描述】:

在我的应用程序中,我需要获取加载应用程序的用户的 IP 地址

我尝试了各种方法来获取IP地址。但是当尝试加载应用程序时,没有获取当前IP地址。

 protected string GetIPAddress()
    {
        System.Web.HttpContext context = System.Web.HttpContext.Current;
        string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (!string.IsNullOrEmpty(ipAddress))
        {
            string[] addresses = ipAddress.Split(',');
            if (addresses.Length != 0)
            {
                return addresses[0];
            }
        }

        return context.Request.ServerVariables["REMOTE_ADDR"];
    }

string ipAddress=Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(o => o.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).First().ToString()

string ipAddress=(HttpContext.Current.Request.UserHostAddress != null) ? HttpContext.Current.Request.UserHostAddress : null;




  using (WebClient wc = new WebClient())
        {
            ipAddress = wc.DownloadString("https://api.ipify.org/");
        }

【问题讨论】:

  • 你在叫什么mobile?一个手机?在什么网络上?
  • “没有得到正确的 IP 地址”。你是怎么测量的?移动设备的 IP 地址不一定是公开可见的,并且可以随时更改,并且可能位于某种网络地址转换层以减少移动提供商必须提供的公共 IP 地址的数量。
  • 定义“不正确”。
  • 在系统或手机中,在某些情况下都无法获取正确的 IP 地址。
  • 如何获取正确的IPV4地址

标签: c# ip-address


【解决方案1】:

试试这个:

public static string GetLocalIPAddress()
{
    var isConnected = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
    if(isConnected){
        var host = Dns.GetHostEntry(Dns.GetHostName());
        foreach (var ip in host.AddressList)
        {
            if (ip.AddressFamily == AddressFamily.InterNetwork)
            {
                return ip.ToString();
            }
        }
    }
    throw new Exception("No network adapters with an IPv4 address in the system!");
}

【讨论】:

  • 你能告诉我这与上面提供的代码有何不同吗?特别是 string ipAddress=Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(o => o.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).First().ToString() 行在功能上与您发布的代码相同。这不会增加任何内容(除了一种不同的异常)。
  • 没有得到正确的IP可能与没有得到网络连接有关。首先检查网络是否连通System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()
  • @Achu_L 那么你得到了什么 IP 地址。
  • 获取这种格式的ip地址有时是2405:204:71c7:d1b5::1e9b:90a5。我需要获取ipv4地址
猜你喜欢
  • 2019-01-14
  • 2012-06-06
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 2011-05-26
  • 2017-01-10
  • 2015-03-01
相关资源
最近更新 更多