http://www.cnblogs.com/kevinGao/archive/2012/05/02/2482117.html
来源:互联网 发布:和禹网络培训费 编辑:程序博客网 时间:2024/05/22 17:13
最近在开发项目的过程中需要获取用户查询时的IP地址的区域,以用来做统计分析用。经过一番查阅资料,然后写了个测试程序,很快就搞定了这个功能。
现在分享下我的实现方法,大家如果有更好的实现,欢迎提出哦。
首先我找到了一个比较好用的查询IP地址归属地的公用的WebService,http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx。
调用其中的getCountryCityByIp 方法可以获取到具体的IP的区域地址。该WebService的说明如下:
getCountryCityByIp
通过输入IP地址查询国家、城市、所有者等信息。没有注明国家的为中国
输入参数:IP地址(自动替换 " 。" 为 "."),返回数据: 一个一维字符串数组String(1),String(0) = IP地址;String(1) = 查询结果或提示
接下来就是要获取用户当前电脑的上网IP了,具体的实现方法如下所示:
/// <summary>
/// 获取本机的上网IP
/// </summary>
/// <returns></returns>
private string GetConnectNetAddress()
{
string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址
Uri uri = new Uri(strUrl);
WebRequest webreq = WebRequest.Create(uri);
Stream s = webreq.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.Default);
string all = sr.ReadToEnd(); //读取网站返回的数据 格式:您的IP地址是:[x.x.x.x]
int i = all.IndexOf("[") + 1;
string tempip = all.Substring(i, 15);
string ip = tempip.Replace("]", "").Replace(" ", "").Replace("<", "");
return ip;
}
这个方法是http://www.ip138.com/ip2city.asp通过在这个网站上抓取到电脑的上网的IP地址来实现获取本机的上网的IP地址的。
当然如果那天这个网站更改了域名或者不存在了,这个方法就不能用了哦,呵呵。
接下来的事情就很简单了,将上面的webservice添加到项目中去,然后调用这个webservice来获取上网的区域。
具体实现如下:
/// <summary>
/// 获取上网IP的区域
/// </summary>
/// <returns></returns>
private string GetConnectNetAddressArea()
{
string strIP = GetConnectNetAddress();
IpAddressSearchWebService webService = new IpAddressSearchWebService();
string[] strArea=webService.getCountryCityByIp(strIP);
return strArea[1];
}
这样获取用户查询的上网IP地址的区域就成功实现了。
- http://www.cnblogs.com/kevinGao/archive/2012/05/02/2482117.html
- http详解(http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html)
- HTTP协议详解,转自http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html
- http://www.cnblogs.com/hnrainll/archive/2012/05/05/2484642.html blue架构
- 后缀数组 倍增算法 出自http://www.cnblogs.com/staginner/archive/2012/02/02/2335600.html
- http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html
- android boot 代码流程http://www.cnblogs.com/idiottiger/archive/2012/05/23/2513494.html
- 使用activitygroup(原地址:http://www.cnblogs.com/answer1991/archive/2012/05/08/2489844.html)
- http://www.cnblogs.com/Purple_Xiapei/archive/2012/05/27/2520477.html
- http://www.cnblogs.com/tornadomeet/archive/2012/05/24/2515980.html
- http://www.cnblogs.com/devil-91/archive/2012/05/10/2493611.html
- Linux的inode的理解 http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html
- 函数调用分析 http://www.cnblogs.com/bangerlee/archive/2012/05/22/2508772.html
- http://www.cnblogs.com/bluestorm/archive/2012/05/10/2493592.html
- SQlite 基础 转自:http://www.cnblogs.com/elleniou/archive/2012/05/04/2482041.html
- Android LayoutInflater详解 (转载:http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html)
- http://www.cnblogs.com/smileEvday/archive/2012/06/05/UIColor_CIColor_CGColor.html
- linux下select使用--转载http://www.cnblogs.com/moonvan/archive/2012/05/26/2518881.html
- leetCode 62.Unique Paths (唯一路径) 解题思路和方法
- 深入浅出redis事件框架
- Scheme 4 Javaer-3.高阶函数
- apache 建立和个人网站配置
- Swift 数组Array
- http://www.cnblogs.com/kevinGao/archive/2012/05/02/2482117.html
- JAVA下AES256加密
- C++到底还能做什么? ----感觉说的还是很有道理的,共勉!
- [leetcode] 237.Delete Node in a Linked List
- Java多线程的用法详解
- 用一条sql语句查出每个name最近的记录
- kafka manager安装
- container_of的使用
- mysql日志详细解析