热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> .Net编程>>正文内容

C#取真实IP地址

发布时间:2010年03月06日点击数: 佚名
  1. //// <summary> 
  2. /// 取得客户端真实IP。如果有代理则取第一个非内网地址 
  3. /// </summary> 
  4. public static string IPAddress 
  5.     get 
  6.     { 
  7.         string result = String.Empty; 
  8.         result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
  9.         if(result!=null&&result!= String.Empty) 
  10.         { 
  11.             //可能有代理 
  12.             if(result.IndexOf(".")==-1)    //没有"."肯定是非IPv4格式 
  13.                 result = null
  14.             else 
  15.             { 
  16.                 if(result.IndexOf(",")!=-1) 
  17.                 { 
  18.                     //有",",估计多个代理。取第一个不是内网的IP。 
  19.                     result = result.Replace(" ","").Replace(""",""); 
  20.                     string[] temparyip = result.Split(",;".ToCharArray()); 
  21.                     for(int i=0;i<temparyip.Length;i++) 
  22.                     { 
  23.                         if( Text.IsIPAddress(temparyip[i]) 
  24.                             && temparyip[i].Substring(0,3)!="10." 
  25.                             && temparyip[i].Substring(0,7)!="192.168" 
  26.                             && temparyip[i].Substring(0,7)!="172.16."
  27.                         { 
  28.                             return temparyip[i];    //找到不是内网的地址 
  29.                         } 
  30.                     } 
  31.                 } 
  32.                 else if(Text.IsIPAddress(result)) //代理即是IP格式 
  33.                     return result; 
  34.                 else 
  35.                     result = null;    //代理中的内容 非IP,取IP 
  36.             } 
  37.         } 
  38.         string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null 
  39. && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] !=String.Empty)? 
  40. HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]:HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
  41.          if (null == result || result == String.Empty) 
  42.             result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
  43.         if (result == null || result == String.Empty) 
  44.             result = HttpContext.Current.Request.UserHostAddress; 
  45.             return result; 
  46.     } 
  1. #region bool IsIPAddress(str1) 判断是否是IP格式 
  2. //// <summary> 
  3. /// 判断是否是IP地址格式 0.0.0.0 
  4. /// </summary> 
  5. /// <param name="str1">待判断的IP地址</param> 
  6. /// <returns>true or false</returns> 
  7.   
  8. public static bool IsIPAddress(string str1) 
  9.     if(str1==null||str1==string.Empty||str1.Length<7||str1.Length>15) return false
  10.     string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$"
  11.     Regex regex = new Regex(regformat,RegexOptions.IgnoreCase ); 
  12.     return regex.IsMatch(str1); 
  13. #endregion 

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作