加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C# 根据ip获取城市等有关信息

发布时间:2023-04-10 14:11:48 所属栏目:语言 来源:
导读:代码如下:

/// <summary>

/// 得到真实IP以及所在地详细信息(Porschev)

/// </summary>

/// <returns></returns>

public string GetIpDetails()

{

//设置获取IP地址和国家源码的网址
代码如下:
 
/// <summary>
 
/// 得到真实IP以及所在地详细信息(Porschev)
 
/// </summary>
 
/// <returns></returns>
 
public string GetIpDetails()
 
{
 
//设置获取IP地址和国家源码的网址
 
string url = "http://www.ip138.com/ips8.asp";
 
string regStr = "(?<=<td//s*align=///"center///">)[^<]*?(?=<br/><br/></td>)";
 
//IP正则
 
string ipRegStr = "((2[0-4]//d|25[0-5]|[01]?//d//d?)//.){3}(2[0-4]//d|25[0-5]|[01]?//d//d?)";
 
//IP地址
 
string ip = string.Empty;
 
//国家
 
string country = string.Empty;
 
//省市
 
string adr = string.Empty;
 
//得到网页源码
 
string html = GetHtml(url);
 
Regex reg = new Regex(regStr, RegexOptions.None);
 
Match ma = reg.Match(html); html = ma.Value;
 
Regex ipReg = new Regex(ipRegStr, RegexOptions.None);
 
ma = ipReg.Match(html);
 
//得到IP
 
ip = ma.Value;
 
int index = html.LastIndexOf(":") + 1;
 
//得到国家
 
country = html.Substring(index);
 
adr = GetAdrByIp(ip);
 
return "IP:" + ip + " 国家:" + country + " 省市:" + adr;
 
}
 
/// <summary>
 
/// 通过IP得到IP所在地省市(Porschev)
 
/// </summary>
 
/// <param name="ip"></param>
 
/// <returns></returns>
 
public string GetAdrByIp(string ip)
 
{
 
string url = "http://www.cz88.net/ip/?ip=" + ip;
 
string regStr = "(?<=<span//s*id=///"cz_addr///">).*?(?=</span>)";
 
//得到网页源码
 
string html = GetHtml(url);
 
Regex reg = new Regex(regStr, RegexOptions.None);
 
Match ma = reg.Match(html);
 
html = ma.Value;
 
string[] arr = html.Split(' ');
 
return arr[0];
 
}
 
代码如下:
 
/// <summary>
 
/// 获取HTML源码信息(Porschev)
 
/// </summary>
 
/// <param name="url">获取地址</param>
 
/// <returns>HTML源码</returns>
 
public string GetHtml(string url)
 
{
 
string str = "";
 
try
 
{
 
Uri uri = new Uri(url);
 
WebRequest wr = WebRequest.Create(uri);
 
Stream s = wr.GetResponse().GetResponseStream();
 
StreamReader sr = new StreamReader(s, Encoding.Default);
 
str = sr.ReadToEnd();
 
}
 
catch (Exception e)
 
{
 
}
 
return str;
 
}
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!