介紹通過IP地址查找ip具體的城市和運營商!通過QQIP地址庫:QQWry.Dat編寫
以下只貼出少量代碼,請各位直接到本人的網(wǎng)盤下載完整版(代碼+最新QQWry.Dat),項目可直接運行!
QQWry.Dat大小為8.79M,項目大小僅390k,直接運行IPTest.java類即可!
此代碼可用于各種java項目和jsp、j2ee項目
注意:QQWry.Dat只需文件放在對應的目錄下即可。
- public class IPSeeker {
- //純真IP數(shù)據(jù)庫名
- 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;
- // 內(nèi)存映射文件
- private MappedByteBuffer mbb;
- // 起始地區(qū)的開始和結(jié)束的絕對偏移
- 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) {
- ...........
- .............
- ................