zoukankan      html  css  js  c++  java
  • 获取客户端IP,

    今天Boss说,项目中的报错邮件发回的客户端IP地址不对,居然是自己服务器端的IP地址...我那个汗了一把...百度了一堆,最会也木有找到更好的方法,希望园子里的大牛们给小弟指点指点...

    下面是正在使用的获取IP地址的方法. 正如你看到的,有时候仍旧取不到真的准确的IP地址,我想要个能百分之百取得IP地址的方法,只能跪求了....

    /// <summary>
        /// 获取ip
        /// </summary>
        /// <param name="m_p">当前页</param>
        /// <returns>IP</returns>
        public static string GetUserIP()
        {
            HttpContext context = HttpContext.Current;
            string clientip = "";
    
            //可以透过代理服务器取得客户端真实的IP,但是并不是每个代理服务器都能用这个方法取得真实IP
            //如果客户端没有使用代理服务器,这个值就为null,所以必须判断
            if (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
            {
                clientip = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Trim();
                if (clientip.IndexOf(",") > -1)
                {
                    string[] tempIp = clientip.Split(',');
                    foreach (string s in tempIp)
                    {
                        //192.168.1.1属于IP地址的C类地址,属于保留IP,专门用于路由器设置.
                        if (!s.StartsWith("192.168"))
                        {
                            clientip = s.Trim();
                            break;
                        }
                    }
                }
            }
            else
            {
                //取得客户端的IP地址,如果客户端使用代理服务器,那么取得的就是代理服务器的IP,而不是真实的IP地址
                clientip = context.Request.ServerVariables["REMOTE_ADDR"];
            }
            try
            {
                IPAddress.Parse(clientip);
            }
            catch
            {
                clientip = "127.127.0.1";
            }
            return clientip;
        }
  • 相关阅读:
    解释器模式
    命令模式
    责任链模式
    代理模式
    享元模式
    外观模式
    装饰器模式
    组合模式
    过滤器模式
    js广告浮动
  • 原文地址:https://www.cnblogs.com/ry123/p/2550362.html
Copyright © 2011-2022 走看看