【问题标题】:How to read correct IP address?如何读取正确的 IP 地址?
【发布时间】:2016-07-27 19:21:36
【问题描述】:

我想读取客户端机器的 IP 地址,我正在使用下面的代码行 -

UserIP = Dns.GetHostAddresses(Dns.GetHostName())[1].ToString();

对于某些机器,它返回正确的 IP 地址,如 - 10.50.207.154,但对于某些机器,它返回的 IP 地址如 - fe80::25ab:4248:c134:23c6%29

如何获取第一个 IP 地址,例如 (Ex - 10.50.207.154)?

【问题讨论】:

标签: c# get ip-address ipv4


【解决方案1】:

获取客户端机器的IP地址,试试这个对我有用,

private string GetIPAddress()
        {
            string IpAddress;
            IpAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

            if (IpAddress == "" || IpAddress == null)
            {
                IpAddress = Request.ServerVariables["REMOTE_ADDR"];

                if (IpAddress == "::1" || IpAddress == "localhost")
                {
                    IPAddress[] ipArray = Dns.GetHostAddresses(Dns.GetHostName());
                    foreach (IPAddress ip in ipArray)
                    {
                        //InterNetwork for IPV4
                        if (ip.AddressFamily == AddressFamily.InterNetwork)
                        {
                            IpAddress = ip.ToString();
                            break;
                        }
                    }
                }
            }

            return IpAddress;
        }

【讨论】:

    【解决方案2】:

    它们都是 IP 地址。 “正确”的是 IPv4。较长的是IPv6

    您可以write a simple regex to detect IPv4,但我感觉您错误地将 IPv6 地址视为不是 IP 地址,而实际上它们确实如此。

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 2019-05-18
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 2015-08-19
      • 1970-01-01
      相关资源
      最近更新 更多