Java - Ort mit IP-Adresse finden
In diesem Beispiel zeigen wir Ihnen, wie Sie mithilfe einer IP-Adresse einen Ort (Land, Stadt, Breite, Länge) finden.
1. GeoLite-Datenbank
MaxMind bietet eine kostenlose GeoLite-Datenbank (IP Address to Location).
2. GeoLite Java Beispiel
Ein Beispiel für die Verwendung von GeoIP-Client-Java-APIs zum Suchen eines Speicherorts mithilfe der IP-Adresse.
GetLocationExample.java
package com.example.analysis.location; import java.io.File; import java.io.IOException; import com.maxmind.geoip.Location; import com.maxmind.geoip.LookupService; import com.maxmind.geoip.regionName; import com.example.analysis.location.mode.ServerLocation; public class GetLocationExample { public static void main(String[] args) { GetLocationExample obj = new GetLocationExample(); ServerLocation location = obj.getLocation("206.190.36.45"); System.out.println(location); } public ServerLocation getLocation(String ipAddress) { File file = new File( "C:\\resources\\location\\GeoLiteCity.dat"); return getLocation(ipAddress, file); } public ServerLocation getLocation(String ipAddress, File file) { ServerLocation serverLocation = null; try { serverLocation = new ServerLocation(); LookupService lookup = new LookupService(file,LookupService.GEOIP_MEMORY_CACHE); Location locationServices = lookup.getLocation(ipAddress); serverLocation.setCountryCode(locationServices.countryCode); serverLocation.setCountryName(locationServices.countryName); serverLocation.setRegion(locationServices.region); serverLocation.setRegionName(regionName.regionNameByCode( locationServices.countryCode, locationServices.region)); serverLocation.setCity(locationServices.city); serverLocation.setPostalCode(locationServices.postalCode); serverLocation.setLatitude(String.valueOf(locationServices.latitude)); serverLocation.setLongitude(String.valueOf(locationServices.longitude)); } catch (IOException e) { System.err.println(e.getMessage()); } return serverLocation; } }
Ausgabe
ServerLocation [countryCode=US, countryName=United States, region=CA, regionName=California, city=Sunnyvale, postalCode=94089, latitude=37.424896, longitude=-122.0074]