#region 获取客户端IP地址

         /// <summary>
         /// 获取客户端IP地址
         /// </summary>
         /// <returns></returns>
         public static string GetIP()
         {
             string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
             if (string.IsNullOrEmpty(result))
             {
                 result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
             }
             if (string.IsNullOrEmpty(result))
             {
                 result = HttpContext.Current.Request.UserHostAddress;
             }
             if (string.IsNullOrEmpty(result))
             {
                 return "0.0.0.0";
             }
             return result;
         }

         #endregion

         #region 取客户端真实IP

         ///  <summary>
         ///  取得客户端真实IP。如果有代理则取第一个非内网地址
         ///  </summary>
         public static string GetIPAddress
         {
             get
             {
                 var result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                 if (!string.IsNullOrEmpty(result))
                 {
                     //可能有代理
                     )        //没有“.”肯定是非IPv4格式
                         result = null;
                     else
                     {
                         )
                         {
                             //有“,”,估计多个代理。取第一个不是内网的IP。
                             result = result.Replace("  ", "").Replace("'", "");
                             string[] temparyip = result.Split(",;".ToCharArray());
                             ; i < temparyip.Length; i++)
                             {
                                 if (IsIPAddress(temparyip[i])
                                         && temparyip[i].Substring(, ) != "10."
                                         && temparyip[i].Substring(, ) != "192.168"
                                         && temparyip[i].Substring(, ) != "172.16.")
                                 {
                                     return temparyip[i];        //找到不是内网的地址
                                 }
                             }
                         }
                         else if (IsIPAddress(result))  //代理即是IP格式
                             return result;
                         else
                             result = null;        //代理中的内容  非IP,取IP
                     }

                 }

                 string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty) ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] : HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"];

                 if (string.IsNullOrEmpty(result))
                     result = HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"];

                 if (string.IsNullOrEmpty(result))
                     result = HttpContext.Current.Request.UserHostAddress;

                 return result;
             }
         }

         #endregion

         #region  判断是否是IP格式

         ///  <summary>
         ///  判断是否是IP地址格式  0.0.0.0
         ///  </summary>
         ///  <param  name="str1">待判断的IP地址</param>
         ///  <returns>true  or  false</returns>
         public static bool IsIPAddress(string str1)
         {
              || str1.Length > ) return false;

             const string regFormat = @"^d{1,3}[.]d{1,3}[.]d{1,3}[.]d{1,3}$";

             var regex = new Regex(regFormat, RegexOptions.IgnoreCase);
             return regex.IsMatch(str1);
         }

         #endregion

         #region 获取公网IP
         /// <summary>
         /// 获取公网IP
         /// </summary>
         /// <returns></returns>
         public static string GetNetIP()
         {
             string tempIP = "";
             try
             {
                 System.Net.WebRequest wr = System.Net.WebRequest.Create("http://city.ip138.com/ip2city.asp");
                 System.IO.Stream s = wr.GetResponse().GetResponseStream();
                 System.IO.StreamReader sr = new System.IO.StreamReader(s, System.Text.Encoding.GetEncoding("gb2312"));
                 string all = sr.ReadToEnd(); //读取网站的数据  

                 ;
                 int end = all.IndexOf("]", start);
                 tempIP = all.Substring(start, end - start);
                 sr.Close();
                 s.Close();
             }
             catch
             {
                 )
                     tempIP = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[].ToString();
                 if (string.IsNullOrEmpty(tempIP))
                     return GetIP();
             }
             return tempIP;
         }
         #endregion  

获取客户端IPAsp.Net的更多相关文章

  1. PHP获取客户端IP

    /** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...

  2. C#服务器获取客户端IP地址以及归属地探秘

    背景:博主本是一位Windows桌面应用程序开发工程师,对网络通信一知半解.一日老婆逛完某宝,问:"为什么他们知道我的地址呢,他们是怎么获取我的地址的呢?" 顺着这个问题我们的探秘 ...

  3. ASP.NET获取客户端、服务器端的信息

    ASP.NET获取客户端.服务器端基础信息 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名: ...

  4. 负载均衡的场景下ASP.NET Core如何获取客户端IP地址

    在ASP.NET中,使用负载均衡时,可以通过ServerVariables获取客户端的IP地址. var ip = request.ServerVariables["HTTP_X_FORWA ...

  5. 在Thinkphp3.2.3框架下实现自动获取客户端IP地址的get_client_ip()函数

    在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示 ...

  6. JavaScript获取客户端计算机硬件及系统等信息的方法

    JavaScript获取客户端计算机硬件及系统等信息的方法 JavaScript 获取客户端计算机硬件及系统信息 通过WMI来实现获取客户端计算机硬件及系统信息: function getSysInf ...

  7. .NET 获取客户端的操作系统版本、浏览器版本和IP地址

    我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...

  8. 根据Request获取客户端IP 内网IP及外网IP

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...

  9. Apache 日志管理,获取客户端端口号

    日志管理分类 日志文件是用户管理和监控 Apache 安全的非常好的第一手资料,它清晰地记录了客户端访问 Apache 服务器资源的每一条记录,以及在访问中出现的错误信息,可以这样说,Apache 可 ...

随机推荐

  1. 在ASP.NET中动态加载内容(用户控件和模板)

    在ASP.NET中动态加载内容(用户控件和模板) 要点: 1. 使用Page.ParseControl 2. 使用base.LoadControl 第一部分:加载模板 下 面是一个模板“<tab ...

  2. UltraEdit中java代码换行问题

    在很多开发中始用的文本编辑器中UltraEdit是非常主流的种了,但是,随着版本的更新,最近几版中出现了以下问题 问题描述:当用UltraEd(14.0版本)编写Java代码时,当遇到{}换行时,希望 ...

  3. Java调用Python脚本

    今天遇到Java调用一个Python脚本的问题,纠结了大半天,遇到各种问题.网上搜索的大部分都是用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什 ...

  4. 阿尔宾我饿iejr89e 如何

    http://www.huihui.cn/share/8112372 http://www.huihui.cn/share/8112363 http://www.huihui.cn/share/811 ...

  5. 关于jdbc的一些疑问

    1.为什么强调在使用jdbc时,须要在使用的时候才打开连接(Connection),用完后立刻关闭.假设我的连接(Connection)一開始就打开.在整个程序结束时才关闭,会带来什么后果呢? 2.为 ...

  6. HDU 1862 EXCEL次序 (排序水问题)

    Problem Description Excel对能够记录一组由任意列排序指定.现在,请把你编译的代码类似特征.   Input 測试输入包括若干測试用例. 每一个測试用例的第1行包括两个整数 N ...

  7. NYoj-街区最短路径问题

    街区最短路径问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描写叙述 一个街区有非常多住户,街区的街道仅仅能为东西.南北两种方向. 住户仅仅能够沿着街道行走. 各个街道之 ...

  8. 使用Intel编译器获得一致的浮点数值计算结果

    使用Intel编译器获得一致的浮点数值计算结果大多数十进制的浮点数, 用二进制表示时不是完全一致的; 与此同时, 大多数与浮点数值相关的计算结果, 存在着固有的不确定性.通常, 编写浮点计算应用软件希 ...

  9. Cocos2dx项目移植Android平台

    链接地址:http://blog.csdn.net/iuncle/article/details/24772183 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.Classes目录下存放. ...

  10. POJ 3384 Feng Shui 凸包直径 + 半平面交

    G++一直没有过了 换成 C++果断A掉了...It's time to bet RP. 题意:给一个多边形,然后放进去两个圆,让两个圆的覆盖面积尽量最大,输出两个圆心的坐标. 思路:将多边形的边向里 ...