如何根据Ip获取地址信息--Java----待整理完善!!!

QQWry.dat数据写入方法:

http://www.cnblogs.com/xumingxiang/archive/2013/02/17/2914524.html

java读取QQwry.dat获得ip地址对应实际位置:

http://outofmemory.cn/code-snippet/541/java-duqu-QQwry-dat-get-ip-address-duiying-shiji-position

QQwry格式如下:

A。文件头,共8字节 
B。若干条记录的结束地址+国家和区域 
C。按照从小到大排列的若干条起始地址+结束地址偏移,定长,7字节 
D。所有的IP都是用4字节整数记录的,并且遵照Intel次序,高位在后,低位在前。 
E。所有偏移量都是绝对偏移,就是从文件最开头计算。 
F。除了文件头用了两个4字节偏移,其余偏移量都用3字节。 
G。所有的偏移量也是低位在前,高位在后 
H。采用了一些字符串压缩技术

1。文件头,共8字节 
FirstStartIpOffset:4 第一个起始IP的绝对偏移 
LastStartIpOffset:4 最后一个起始IP的绝对偏移

2。起始地址+结束地址偏移记录区 
每条记录7字节,按照起始地址从小到大排列

StartIp:4 起始地址,整数形式的IP 
EndIpOffset:3 结束地址绝对偏移

3。结束地址+国家+区域记录区

EndIP:4 
国家+区域记录:不定长

4。国家+区域记录,有几种形式 
4.1。 
国家字符串,以 0x0 结束 
区域字符串,以 0x0 结束

4.2。 
Flag:1 标识取值: 0x1,后面没有Local记录 
0x2,后面还有Local记录 
sCountryOffset:3 实际的字符串要去这个偏移位置去找 
LocalRec:不定长,可选 根据Flag取值而定。这个记录也类似Country,可能采用压缩

4.3 LocalRec结构一 
flag:1 还不是十分了解这个flag含义,取值 0x1 or 0x2 
sLocalOffset:3

4.4 LocalRec结构二 
sLocal:不定长 普通的C风格字符串

注意:sCountryOffset指向的位置可能依然是4.2格式的,不知道为什么这样设计。

Flag取0x1时,sCountryOffset指向的位置可能是Flag为0x2,这时,LocalRec也在这里寻找。

现在不明白当记录Local的位置遇到0x2的标志意味着什么。

在qqwry.dat中,似乎存在一些错误。 
个别的记录Local会被写为: 
0x2,0x0,0x0,0x0 
根据规则,应该到文件最开头去寻找,可是,文件最开头显然不是记录这些的。

时间: 2024-09-28 20:37:59

如何根据Ip获取地址信息--Java----待整理完善!!!的相关文章

java 根据ip获取地址

用淘宝接口:(源码:java 根据IP地址获取地理位置) pom.xml: <!-- https://mvnrepository.com/artifact/net.sourceforge.jregex/jregex --> <dependency> <groupId>net.sourceforge.jregex</groupId> <artifactId>jregex</artifactId> <version>1.2_0

通过GeoIP2分析访问者IP获取地理位置信息

原文链接:http://blog.csdn.net/johnnycode/article/details/42028841 MaxMind GeoIP2 服务能识别互联网用户的地点位置与其他特征,应用广泛,包括个性化定制内容.诈欺检测.广告定向.网站流量分析.执行规定.地理目标定位.地理围栏定位 (geo-fencing)以及数字版权管理.目前使用 GeoIP 更多是配合Nginx或Apache服务器进行日志分析获取网站访问量地域分布状况. GeoIP 分为商业版和免费版,免费版比商业版精度差了

C#调用百度高精度IP定位API通过IP获取地址

API首页:http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip 1.申请百度账号,创建应用,获取密钥(AK) http://lbsyun.baidu.com/apiconsole/key 启用服务:,可以根据自己需求来钩选,这里先全选了. 请求校验方式:IP白名单校验/SN检验,这里选择IP白名单校验.即在下面填上你访问机器的IP地址.如(114.114.114.114). 单击提交,获得AK 2.获取方式: 服务地址: http

根据省份等地址获取经纬度,或根据经纬度获取地址信息

在web开发涉及地图操作的时候或者移动客户端开发中有时候有以下需求: 下面主要记录通过百度提供的API的一个解决方案: 在百度开发平台中提供了这样一个叫Geocoding 的API,这个API用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,使用的是http协议,返回JSON或者XML数据. 地理编码:即地址解析,由详细到街道的结构化地址得到百度经纬度信息,例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”.同时,地理编码

百度地图获取地址信息由纬度和经度

谁是通过谷歌的坐标呼叫与谷歌api 近来的 罗总能找到谷歌server. 因此,要找到百度的发现, 住址http://developer.baidu.com/map/webservice-geocoding.htm#.E4.BB.80.E4.B9.88.E6.98.AFGeocoding.EF.BC.9F 逆地理编码演示样例 參数 值 Latitude: Longitude: pois(是否显示周边100米内poi):   不显示  显示  执行 (结果显演示样例如以下) http://api.

php 获取IP 根据IP 获取城市信息 判断是否手机登陆

function GetIp(){ $realip = ''; $unknown = 'unknown'; if (isset($_SERVER)){ if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown)){ $arr = explode('

Android百度地图开发实现点击地图添加Marker并获取地址信息

SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_map); // 获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); //设置是否显示比例尺控件 mMapView.showScaleControl(false); //设置是否显示缩放控件 mMapV

通过ip获取地址

<?php /** * IP 地理位置查询类 * * @author 马秉尧 * @version 1.5 * @copyright 2005 CoolCode.CN */ class IpLocation { /** * QQWry.Dat文件指针 * * @var resource */ var $fp; /** * 第一条IP记录的偏移地址 * * @var int */ var $firstip; /** * 最后一条IP记录的偏移地址 * * @var int */ var $last

在GN3中如何配置VPCS的IP等地址信息?

在GN3中配置添加的PC机的IP地址命令: PC-1> ip 192.168.1.2/24 192.168.1.1      #配置IP和子网掩码 PC-1> ip 192.168.1.2 255.255.255.0 192.168.1.1      #功能同上 PC-1> ip dns 8.8.8.8      #配置DNS PC-1> show ip      #查看IP配置信息 PC-1> save      #保存配置 原文地址:http://blog.51cto.c