我们使用GeoLiteCityv6来检测产品中的ipv6地址。然而,我们发现,州/地区/城市的数据无法从数据库中获得,而国家数据是可用的。
例如,当解析IP地址2a02:2b88:2:1::419a:1时,我们得到Country=Czech Republic,但Region为空,city也为空。我们检查了几个IP地址,没有得到任何地区/城市信息。
我们使用C API进行开发,我们使用的API如下所示:
GeoIPRecord *gir = GeoIP_record_by_addr_v6(gi, ip);
char *state = (char *)GeoIP_region_name_by_code(gir->country_code, gir->region);
printf("DB: state is %s.n", state); //return NULL
printf("DB: continent_code is %s.n", gir->continent_code); //right
printf("DB: country name is %s.n", gir->country_name); //right
printf("DB: country code is %s.n", gir->country_code); //right
printf("DB: region is %s.n", gir->region); //return NULL
printf("DB: city is %s.n", gir->city); //return NULL
所以我的问题是,GeoLiteCityv6.dat是否没有地区/城市的相关数据,或者我们滥用了错误的API?
非常感谢!
不,尽管它有名字,但它没有城市级别的信息。只需下载csv格式的相同文件并打开即可。没有城市级别的信息。