介绍通过IP地址查找ip具体的城市和运营商!通过QQIP地址库:QQWry.Dat编写
以下只贴出少量代码,请各位直接到本人的网盘下载完整版(代码+最新QQWry.Dat),项目可直接运行!
QQWry.Dat大小为8.79M,项目大小仅390k,直接运行IPTest.java类即可!
此代码可用于各种java项目和jsp、j2ee项目
注意:QQWry.Dat只需文件放在对应的目录下即可。
- public class IPSeeker {
- //纯真IP数据库名
- private String IP_FILE="QQWry.Dat";
- //保存的文件夹
- private String INSTALL_DIR="f:/qqwry";
-
-
- // 一些固定常量,比如记录长度等等
- private static final int IP_RECORD_LENGTH = 7;
- private static final byte REDIRECT_MODE_1 = 0x01;
- private static final byte REDIRECT_MODE_2 = 0x02;
-
- // 用来做为cache,查询一个ip时首先查看cache,以减少不必要的重复查找
- private Map<String, IPLocation> ipCache;
- // 随机文件访问类
- private RandomAccessFile ipFile;
- // 内存映射文件
- private MappedByteBuffer mbb;
- // 起始地区的开始和结束的绝对偏移
- private long ipBegin, ipEnd;
- // 为提高效率而采用的临时变量
- private IPLocation loc;
- private byte[] buf;
- private byte[] b4;
- private byte[] b3;
-
- public IPSeeker(String fileName,String dir) {
- this.INSTALL_DIR=dir;
- this.IP_FILE=fileName;
- ipCache = new HashMap<String, IPLocation>();
- loc = new IPLocation();
- buf = new byte[100];
- b4 = new byte[4];
- b3 = new byte[3];
- try {
- ipFile = new RandomAccessFile(IP_FILE, "r");
- } catch (FileNotFoundException e) {
- ...........
- .............
- ................