如何从Java中获取运行机器区域

如何从Java中获取运行机器区域,java,geolocation,ip-geolocation,Java,Geolocation,Ip Geolocation,我正在寻找一种从给定的IP地址获取区域的方法。我发现internet上有很多可用的API。但问题是,我的IP地址驻留在私有网络中,因此这些地址对于公共网络是不可见的。我的问题是,在不同的平台(Linux、Windows)上使用Java是否有任何本机方法来实现这一点 从Java获取IP地址 InetAddress addr = InetAddress.getLocalHost(); System.out.println(addr.getHostAddress()); GeoLite代码片段 L

我正在寻找一种从给定的
IP地址
获取区域的方法。我发现internet上有很多可用的API。但问题是,我的IP地址驻留在私有网络中,因此这些地址对于公共网络是不可见的。我的问题是,在不同的平台(Linux、Windows)上使用Java是否有任何本机方法来实现这一点

从Java获取IP地址

InetAddress addr = InetAddress.getLocalHost();
 System.out.println(addr.getHostAddress());
GeoLite代码片段

LookupService lookup =new LookupService("src\\main\\resources\\GeoLocationDB\\GeoLiteCity.dat",LookupService.GEOIP_CHECK_CACHE);
     Location locationServices = lookup.getLocation("10.xx.xx.xxx");

    System.out.println(locationServices.city);//throws a null 

1) 您需要找到机器/路由器等的IP地址,以便访问internet。对于这个IP地址,区域可以缩小。如果您的internet连接点位于与PC不同的区域,这将为您的计算机提供错误的区域。2) 要找到具有专用网络地址的机器的区域,这是不可能的。除非您的机器有其他方法获取区域,例如GPS接收器。@非常感谢您的快速回复。我更新了我如何从机器上收集IP的帖子。但它给了我私有IP地址,它不会公开显示。你可以像这里解释的那样检索你的外部IP地址