您的位置:首页 > 其它

.net 获取客户端Ip

2016-08-02 10:55 253 查看
  随着网络的广泛发展,有时候到处要用到获取Ip的方法,下面是一个比较好的获取客户端Ip的方法,希望对您有用。

public static string GetIP()

        {

            //如果客户端使用了代理服务器,则利用HTTP_X_FORWARDED_FOR找到客户端IP地址

            string userHostAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? "";

            if (!string.IsNullOrEmpty(userHostAddress))

            {

                userHostAddress = userHostAddress.Split(',')[0].Trim();

            }

            //否则直接读取REMOTE_ADDR获取客户端IP地址

            if (string.IsNullOrEmpty(userHostAddress))

            {

                userHostAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            }

            //前两者均失败,则利用Request.UserHostAddress属性获取IP地址,但此时无法确定该IP是客户端IP还是代理IP

            if (string.IsNullOrEmpty(userHostAddress))

            {

                userHostAddress = HttpContext.Current.Request.UserHostAddress;

            }

            //最后判断获取是否成功,并检查IP地址的格式(检查其格式非常重要)

            if (!string.IsNullOrEmpty(userHostAddress) && IsIP(userHostAddress))

            {

                return userHostAddress;

            }

            return "127.0.0.1";

        }

        /// <summary>

        /// 检查IP地址格式

        /// </summary>

        /// <param name="ip"></param>

        /// <returns></returns>

        public static bool IsIP(string ip)

        {

            return System.Text.RegularExpressions.Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  .net 获取客户端IP