All Downloads are FREE. Search and download functionalities are using the official Maven repository.

xyz.migoo.framework.infra.utils.IPUtils Maven / Gradle / Ivy

The newest version!
package xyz.migoo.framework.infra.utils;

import cn.hutool.core.io.resource.ResourceUtil;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.lionsoul.ip2region.xdb.Searcher;
import xyz.migoo.framework.infra.Area;

import java.io.IOException;

/**
 * IP 工具类
 * 

* IP 数据源来自 ip2region.xdb 精简版,基于 项目 * * @author wanglhup */ @Slf4j public class IPUtils { /** * 初始化 SEARCHER */ @SuppressWarnings("InstantiationOfUtilityClass") private final static IPUtils INSTANCE = new IPUtils(); /** * IP 查询器,启动加载到内存中 */ private static Searcher SEARCHER; /** * 私有化构造 */ private IPUtils() { try { long now = System.currentTimeMillis(); byte[] bytes = ResourceUtil.readBytes("ip2region.xdb"); SEARCHER = Searcher.newWithBuffer(bytes); log.info("启动加载 IPUtils 成功,耗时 ({}) 毫秒", System.currentTimeMillis() - now); } catch (IOException e) { log.error("启动加载 IPUtils 失败", e); } } /** * 查询 IP 对应的地区编号 * * @param ip IP 地址,格式为 127.0.0.1 * @return 地区id */ @SneakyThrows public static Integer getAreaId(String ip) { return Integer.parseInt(SEARCHER.search(ip.trim())); } /** * 查询 IP 对应的地区编号 * * @param ip IP 地址的时间戳,格式参考{@link Searcher#checkIP(String)} 的返回 * @return 地区编号 */ @SneakyThrows public static Integer getAreaId(long ip) { return Integer.parseInt(SEARCHER.search(ip)); } /** * 查询 IP 对应的地区 * * @param ip IP 地址,格式为 127.0.0.1 * @return 地区 */ public static Area getArea(String ip) { return AreaUtils.getArea(getAreaId(ip)); } /** * 查询 IP 对应的地区 * * @param ip IP 地址的时间戳,格式参考{@link Searcher#checkIP(String)} 的返回 * @return 地区 */ public static Area getArea(long ip) { return AreaUtils.getArea(getAreaId(ip)); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy