如何根据JAVA中的起始IP和网络掩码长度计算该范围内的结束IP

时间:2014-06-05 08:46:11

标签: java postgresql maxmind

我正在尝试使用MaxMind GeoIP(Geo lite 2)数据库。

在来自MaxMind网站的(GeoLite2-Country-CSV.zip)源文件GeoLite2-Country-Blocks.csv中,我有这一行:

:: FFFF:87.197.0.0,112,3057568,3057568 ,,,,, 0,0

我有一个起始IPv4 IP地址:: ffff:87.197.0.0,我有IPv6网络掩码长度112,如何计算JAVA范围内的最后一个IP?

原因是我将CSV格式的MaxMind Geo lite 2数据库导入PostgreSQL数据库,因此我需要将导入的起始IP地址导入一个DB列,将最后的IP地址导入另一个DB列。

感谢。

伊万

1 个答案:

答案 0 :(得分:0)

如果您使用的是Postgres,则应使用cidr or inet type。使用这些类型,您可以以::ffff:87.197.0.0/112(或87.197.0.0/16形式插入数据以用于非IPv6映射地址。使用网络类型,您可以在进行查询时利用Pg' network functions