得到真实外网IP、IP所在国家、省份、地区

  1. #region##得到真实IP以及所在地详细信息      
  2.    /// <summary>      
  3.    /// 得到真实IP以及所在地详细信息(Porschev)      
  4.    /// </summary>      
  5.    /// <returns></returns>      
  6.    public string GetIpDetails()      
  7.    {          
  8.        string url = "http://www.ip138.com/ips8.asp";   //设置获取IP地址和国家源码的网址          
  9.        string regStr = "(?<=<td\\s*align=\\\"center\\\">)[^<]*?(?=<br/><br/></td>)";            
  10.        string ipRegStr = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";    //IP正则                  
  11.        string ip = string.Empty;   //IP地址          
  12.        string country = string.Empty;  //国家          
  13.        string adr = string.Empty;   //省市          
  14.        string html = GetHtml(url);       //得到网页源码          
  15.        Regex reg = new Regex(regStr, RegexOptions.None);                 
  16.        Match ma = reg.Match(html);        html = ma.Value;                
  17.        Regex ipReg = new Regex(ipRegStr, RegexOptions.None);          
  18.        ma = ipReg.Match(html);          
  19.        ip = ma.Value;     //得到IP          
  20.        int index = html.LastIndexOf(":") + 1;          
  21.        country = html.Substring(index);                   //得到国家          
  22.        adr = GetAdrByIp(ip);          
  23.        return "IP:" + ip + "  国家:" + country + "  省市:" + adr;     
  24.    }          
  25.    #endregion     
  26.  
  27.    #region##通过IP得到IP所在地省市      
  28.    /// <summary>      
  29.    /// 通过IP得到IP所在地省市(Porschev)      
  30.    /// </summary>      
  31.    /// <param name="ip"></param>      
  32.    /// <returns></returns>      
  33.    public string GetAdrByIp(string ip)      
  34.    {          
  35.        string url = "http://www.cz88.net/ip/?ip=" + ip;          
  36.        string regStr = "(?<=<span\\s*id=\\\"cz_addr\\\">).*?(?=</span>)";                  
  37.        string html = GetHtml(url);       //得到网页源码          
  38.        Regex reg = new Regex(regStr, RegexOptions.None);          
  39.        Match ma = reg.Match(html);                  
  40.        html = ma.Value;            
  41.        string[] arr = html.Split(' ');          
  42.        return arr[0];      
  43.    }      
  44.    #endregion      
  45.     
  46.    #region##获取HTML源码信息      
  47.    /// <summary>      
  48.    /// 获取HTML源码信息(Porschev)      
  49.    /// </summary>      
  50.    /// <param name="url">获取地址</param>      
  51.    /// <returns>HTML源码</returns>      
  52.    public string GetHtml(string url)      
  53.    {          
  54.        Uri uri = new Uri(url);          
  55.        WebRequest wr = WebRequest.Create(uri);          
  56.        Stream s = wr.GetResponse().GetResponseStream();          
  57.        StreamReader sr = new StreamReader(s, Encoding.Default);                  
  58.        return sr.ReadToEnd();      
  59.    }      
  60.    #endregion  

你可能感兴趣的:(IP)