#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. cordova安装--创建ionic项目

    1.简介ionic ionic 是一个强大的 HTML5 应用程序开发框架(HTML5 Hybrid Mobile App Framework ). 可以帮助您使用 Web 技术,比如 HTML.CS ...

  2. C#中泛型、程序集一些基本运用(Fifteenth Day)

    今天主要在学习了泛型和程序集以及一些细碎的知识的运用.下面我就把今天所学的总结一下. 理论: 泛型: * 英文名字是Generic,可以让多个类型共享一组代码,泛型允许我们声明类型参数化,可以用不同的 ...

  3. UNIX/Linux进程间通信IPC---管道--全总结(实例入门)

    管道 一般,进程之间交换信息的方法只能是经由fork或exec传送打开文件,或者通过文件系统.而进程间相互通信还有其他技术——IPC(InterProcessCommunication) (因为不同的 ...

  4. Kali Rolling在虚拟机安装后的设置

    Kali Linux在2016年的第一个发行版——Kali Rolling是Debian的即时更新版,只要Debian中有更新,更新包就会放入Kali Rolling中,供用户下载使用.它为用户提供了 ...

  5. 函数重载不仅仅是看其参数,还要看是否有const修饰

    比如QString有两个函数,可以堂而皇之的存在,原因就在于有了const修饰以后,编译器不把两个函数当作同一个函数名了: QChar * data() const QChar * data() co ...

  6. Android 下使用tcpdump网络抓包方法

    Android 下使用tcpdump网络抓包方法 抓包需要tcpdump以及Root权限,tcpdump在本文后有下载. 首先把tcpdump传进手机,用adb命令(放SD卡有时会有问题,我一次可以用 ...

  7. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  8. CSS3中的border-radius

    以前在CSS2的基础上做圆角还能算得上是门学问!!各种图片.各种嵌套(<精通CSS——高级web标准解决方案>中有介绍,过程在这就不说了,网上一查就查得到,总之就是:没用CSS3之前觉得很 ...

  9. HDU 1069 monkey an banana DP LIS

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64uDescription 一组研究人员正在 ...

  10. PHPer的等级划分

    PHPer的等级划分 前一段时间刚刚完成PHP的培训,然后想知道自己目前的水平(或者说等级),并且应该在哪些方面进行提高,所以在网上查了一下相关介绍.其中有一篇介绍讲的挺清楚的,至少目前的我还是很认同 ...