BK网络学院

首页搜索登录
首页业界网页平面多媒体程序数据库办公工具服务器系统网络安全站长认证壁纸
加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 搜索

C#枚举所有的IPv4地址并获取地理位置信息

[日期:2013-06-20] 作者: 来源: [字体: ]

C#写程序时需要用到一些IP数据库,这样可以根据来访者的ip地址获取到地理位置信息,如省份、地市等信息。网上大多是收费的,还有的api接口是有访问次数限制的,要么就是旧的数据库,数据不全的。思来想去还是自己动手丰衣足食,利用淘宝IP地址库批量查询获取ip地理信息并入库。

淘宝IP地址库有个好处就是:不限查询次数及频次。

淘宝IP地址库地址:http://ip.taobao.com/

接口说明:

1. 请求接口(GET):

http://ip.taobao.com/service/getIpInfo.PHP?ip=[ip地址字串]

2. 响应信息:

(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商

3. 返回数据格式:

{"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317",

"region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1",

"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",

"county_id":"-1","isp_id":"100017"}}

其中code的值的含义为,0:成功,1:失败。

 

大致思路:C#枚举所有IPv4地址,然后逐一模拟浏览器Get操作获取地理位置信息并入库。

1、C#枚举所有IPv4地址:

'192.0.2.1' 一个Ip地址

'192.0.2.0-31' 枚举192.0.2.0-192.0.2.31 一共32个Ip地址

'192.0.2-3.1-254' 枚举192.0.2.1-192.0.2.254和 192.0.3.1-192.0.3.254 一共254个IP地址

'0-255.0-255.0-255.0-255' 枚举互联网上所有的IPv4地址

代码实现:

string pattern="200.64-71.0-255.0-255";

IPRange ipRange=new IPRange(pattern);

List<IPAddress> addresses=ipRange.GetAllIP();

这里的addresses即为枚举到的ip地址集合。

2、C#模拟浏览器Get方式获取数据参见:C#发送GET、POST方式的web请求

3、获取到的地理信息以JSON方式返回,自己建一个和结果属性名字一样的类,然后将地理信息JSON结果反序列化为这类的实例,反序列化类库参考:C#序列化及反序列化Json对象通用类JsonHelper

4、然后写入数据库,这个不用细述了吧?

如果想提高效率可以使用多线程哦。

关键词:IP  IPv4  位置  枚举  地理 

收藏 推荐 打印 | 录入:blue1000 | 阅读:
本文评论   查看全部评论 (1)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 匿名 发表于 2016/12/24 22:57:22
http://www.blue1000.com/bkhtml/c17/2010-05/67861.htm 医院合作协议书 http://www.blue1000.com/show/8374.html 合作经营协议书 http://www.blue1000.com/show/8370.html