首先在实时程序中 调用接口不现实,肯定是调用离线库去解决地址的,这种准确性很重要,现在推荐下面这个离线库:
注意点:
1)下载包 放到对应的目录,特别是在生产环境,一般放在lib目录下 动态写活
https://dev.maxmind.com/geoip/geoip2/geolite2/#Downloads
下载解压

2)写代码:
代码: 执行main方法
package test_demo;
import com.maxmind.geoip2.DatabaseReader;
import com.maxmind.geoip2.exception.GeoIp2Exception;
import com.maxmind.geoip2.model.CityResponse;
import com.maxmind.geoip2.record.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.net.InetAddress;
public class IPUtils {
private static Logger logger = LoggerFactory.getLogger(IPUtils.class);
/**
* 全局静态变量,DatabaseReader,保证类加载时加载一次
*/
private static DatabaseReader reader;
/**
* 静态代码块,保证项目启动只获取一次文件
*/
static {
File database = null;
try {
//绝对路径读取文件方式
database = new File("C:\\Users\\Administrator\\Desktop\\部署flume+storm文档\\Flume优化\\GeoLite2-City_20191126\\GeoLite2-City.mmdb");
// 通过 InputStream 流式读取文件,目的解决无法通过File方式读取jar

博客介绍了如何在实时程序中使用GeoIP2离线库进行IP地址解析,强调了准确性的重要性。首先,需要将下载的GeoIP2数据库包放置在合适的目录,如生产环境的lib目录,并确保路径动态配置。接着,通过提供的代码示例展示了如何执行IP解析的主要步骤。

2041

被折叠的 条评论
为什么被折叠?



