public class CheckIP  
   {  
       #region 获取浏览器版本号  
  
       /// <summary>  
       /// 获取浏览器版本号  
       /// </summary>  
       /// <returns></returns>  
       public static string GetBrowser()  
       {  
           HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;  
           return bc.Browser + bc.Version;  
       }  
 
       #endregion  
 
       #region 获取操作系统版本号  
  
       /// <summary>  
       /// 获取操作系统版本号  
       /// </summary>  
       /// <returns></returns>  
       public static string GetOSVersion()  
       {  
           //UserAgent   
           var userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];  
  
           var osVersion = "未知";  
  
           if (userAgent.Contains("NT 6.1"))  
           {  
               osVersion = "Windows 7";  
           }  
           else if (userAgent.Contains("NT 6.0"))  
           {  
               osVersion = "Windows Vista/Server 2008";  
           }  
           else if (userAgent.Contains("NT 5.2"))  
           {  
               osVersion = "Windows Server 2003";  
           }  
           else if (userAgent.Contains("NT 5.1"))  
           {  
               osVersion = "Windows XP";  
           }  
           else if (userAgent.Contains("NT 5"))  
           {  
               osVersion = "Windows 2000";  
           }  
           else if (userAgent.Contains("NT 4"))  
           {  
               osVersion = "Windows NT4";  
           }  
           else if (userAgent.Contains("Me"))  
           {  
               osVersion = "Windows Me";  
           }  
           else if (userAgent.Contains(""))  
           {  
               osVersion = "Windows 98";  
           }  
           else if (userAgent.Contains(""))  
           {  
               osVersion = "Windows 95";  
           }  
           else if (userAgent.Contains("Mac"))  
           {  
               osVersion = "Mac";  
           }  
           else if (userAgent.Contains("Unix"))  
           {  
               osVersion = "UNIX";  
           }  
           else if (userAgent.Contains("Linux"))  
           {  
               osVersion = "Linux";  
           }  
           else if (userAgent.Contains("SunOS"))  
           {  
               osVersion = "SunOS";  
           }  
           return osVersion;  
       }  
       #endregion  
 
       #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))  
               {  
                   //可能有代理    
                   if (result.IndexOf(".") == -)        //没有“.”肯定是非IPv4格式    
                       result = null;  
                   else  
                   {  
                       if (result.IndexOf(",") != -)  
                       {  
                           //有“,”,估计多个代理。取第一个不是内网的IP。    
                           result = result.Replace("  ", "").Replace("'", "");  
                           string[] temparyip = result.Split(",;".ToCharArray());  
                           for (int i = ; 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)  
       {  
           if (string.IsNullOrEmpty(str1) || str1.Length <  || 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 start = all.IndexOf("[") + ;  
               int end = all.IndexOf("]", start);  
               tempIP = all.Substring(start, end - start);  
               sr.Close();  
               s.Close();  
           }  
           catch  
           {  
               if (System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.Length > )  
                   tempIP = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[].ToString();  
               if (string.IsNullOrEmpty(tempIP))  
                   return GetIP();  
           }  
           return tempIP;  
       }  
       #endregion  
   }

ASP.NET 查询客户端请求IP地址的更多相关文章

  1. 服务端如何获取客户端请求IP地址

    服务端获取客户端请求IP地址,常见的包括:x-forwarded-for.client-ip等请求头,以及remote_addr参数. 一.remote_addr.x-forwarded-for.cl ...

  2. 服务端如何安全获取客户端请求IP地址

    服务端如何获取客户端请求IP地址,网上代码一搜一大把.其中比较常见有x-forwarded-for.client-ip等请求头,及remote_addr参数,那么为什么会存在这么多获取方式,以及到底怎 ...

  3. ASP.NET - 获得客户端的 IP 地址

    通常我们都通过下面的代码获得IP: REMOTE_ADDR 说明:访问客户端的 IP 地址. 此项信息用户不可以修改.如果真的给改了的话,你也和服务器连接不了了,服务器就是按照这个来与客户端建立连接并 ...

  4. java获取客户端请求IP地址(公网ip)

    之前写了一个获取ip地址的方法,但是放网上一查显示此Ip地址是局域网ip地址,要是想获取请求端的真实公网ip地址怎么样了,看了一些别人的博客后发现,想要获取客户端的公网ip必须借助第三方. packa ...

  5. asp.net中获得客户端的IP地址

    asp.net中获得客户端的IP地址 因为要在项目中取到客户端IP,在网上搜了下相关资料,其中有一篇文章总结的比较详细,这里就把一些我用的上总结一下 方便以后查阅.  通常我们都通过下面的代码获得IP ...

  6. java nginx等代理或网关转发请求后获取客户端的ip地址,原理

    在没有网关或者反向代理软件情况下,java里获取客户端ip地址的方法是request.getRemoteAddr() 先解释下http协议和TCP协议: 网页默认是进行http连接了,http协议即超 ...

  7. 获取客户端的请求IP地址

    获取客户端的请求IP地址 package com.microClass.util; import javax.servlet.http.HttpServletRequest; import java. ...

  8. (转)asp.net中获得客户端的IP地址

    因为要在项目中取到客户端IP,在网上搜了下相关资料,其中有一篇文章总结的比较详细,这里就把一些我用的上总结一下 方便以后查阅. 通常我们都通过下面的代码获得IP:   string ip =Syste ...

  9. --with-http_realip_module选项(后台Nginx服务器记录原始客户端的IP地址 )

    转自:http://blog.itpub.net/27043155/viewspace-734234/ 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如,X-Real-IP 或 X-For ...

随机推荐

  1. Cocos3.0测试版发布(中文)

    最新的cocos2d-x 3.0版本,我们的目标不仅是改进渲染机制,增加对2.5D的支持,基于组件的系统功能,和更好的Label功能.同时 我们希望能够进一步优化引擎,并且使用更友好的C++ API ...

  2. [Javascript] Logging Pretty-Printing Tabular Data to the Console

    Learn how to use console.table to render arrays and objects in a tabular format for easy scanning ov ...

  3. C++:类成员函数的重载、覆盖和隐藏区别?

    #include <iostream> class A { public: void func() { std::cout << "Hello" <& ...

  4. codevs 1128 导弹拦截 (贪心)

    /* 题目大体意思是两套系统好多导弹 怎样分配使得两个系统所拦截的最大半径之和最小 贪心:把距离1系统最远的 让2拦截 记好距离 然后按照距离1由远到近排序 对于每一个导弹 如果这之前的都给2拦截 则 ...

  5. C#关于使用枚举遇到的问题----Type运算符使用的必要性

    我定义了一个枚举AttributeName 然后写到下面代码: Enum .GetValues (AttributeName ): 毫无疑问的错了.别人说要加个Typeof 也就是Enum .GetV ...

  6. 如何做高大上的网站布局 -------------------->>转至(卧牛SEO/武汉SEO http://blog.sina.com.cn/zhengkangseo )

    SEO开始做,最重要的是网站布局,一个网站布局决定了用户在网站的停留时间,在网站中放入用户想要的内容之外,更重要的是要让用户看到网站之后,一目了然,视觉和感官上良好的体验.那新手该如何做网站布局呢? ...

  7. Jquery小东西收集

    1. $(document).ready(),$(function(){}),$(window).load(),window.onload的关系与区别 $(document).ready(functi ...

  8. 开源的Android开发框架-------PowerFramework使用心得(一)总体介绍

    PowerFramework是一款几乎囊括了所有Android基础功能的框架应用,这个框架目前是开源的,开发者可以在这个框架的基础上进行二次开发.结合开发者自己的UI设计,可以很快就能开发出具备基础应 ...

  9. 重新开始学习javase_Exception

    “违例”(Exception)这个词表达的是一种“例外”情况,亦即正常情况之外的一种“异常”.在问题发生的时候,我们可能不知具体该如何解决,但肯定知道已不能不顾一切地继续下去.此时,必须坚决地停下来, ...

  10. JVM调优实践-Tomcat调优

    调优几个重要指标 GC频率 提升每次GC的效率 准备环节 jmeter的配置 未压测前JVM配置 工程未调优前配置 -Xms400m -Xmx400m -XX:PermSize=64m -XX:Max ...