#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  

最新文章

  1. PHP设计模式(六)原型模式(Prototype For PHP)
  2. JavaScript中常见的数组操作函数及用法
  3. Network - SSH
  4. 2016年12-09php函数
  5. L2-015. 互评成绩
  6. Spring生态
  7. Childlife旗下三驾马车
  8. 比较好用的sql语句
  9. SQL Server MySQL 中的 in 与 null
  10. 从XML文件乱码问题,探寻其背后的原理(转)
  11. App架构经验总结(转载)
  12. Java之IO流详解
  13. iOS动画学习-视觉效果
  14. swift之函数式编程(三)
  15. List源码学习之ArrayList
  16. Ionic APP-Web SPA开发进阶(二)Ionic进阶之路由去哪了
  17. Javascript书籍推荐----(步步为赢)
  18. 3星|《陈志武金融投资课》:金融改善社会,A股投资策略
  19. canvas如何自适应屏幕大小
  20. 前端 CSS语法

热门文章

  1. 面试之hack(转载)
  2. 网上的一个helpdesk流程,将来备用
  3. c#中使用log4net工具记录日志
  4. Quiz 6a Question 7————An Introduction to Interactive Programming in Python
  5. ThinkPHP第六天(正则表达式)
  6. ODBC、OLE DB、 ADO、ODAC、ODP.NET
  7. spring mvc实现ajax 分页
  8. Linux编程---I/O部分
  9. 权限管理之基于ACL的实现:自定义JSTL函数实现即时认证
  10. Spout的实现步骤