Calculating the distance between 2 ips can be done easily by using the great geo service: Maxmind.
Maxmind is an affordable geo service with broad range of solutions like:
- Country
- City
- Organization
- ISP
and more…
Maxmind services comes in 2 flavors:
- Paid service: This is very accurate data, in a reasonable low cost.
- Free service: This is a little less accurate data, but a totally free service.
In order to calculate the distance between 2 IPs, we will use the free version of Maxmind. The free service is called: geoLite. we will use the service named: geoLite city. The geoLite city data contains location information. The location contains latitude and longitude information for ip ranges. Latitude and longitude information is a coordinate method used in may location services such GPS.
In order to use Maxmind we need 2 things:
- Download the Maxmind free open source Java API. Note, that Maxmind has API support for many more commonly used programming languages.
- Download the latest city binary file, which contains IP ranges information used by Maxmind API.
Calculating the distance between 2 IPs is very easy, since Maxmind did all the hard work for us. We just have to get “Location” instance for the 2 IP and use the “distance” method of the “Location” instance. The returned result is the distance between the 2 IPs in kilometers.
Let’s have a look at a sample code that calculates the distance between Google and Apple:
package com.bashan.blog.maxmind;import com.maxmind.geoip.Location;import com.maxmind.geoip.LookupService;import java.io.IOException;/**
* @author Bashan*/public class MaxmindTest {public static void main(String args[]) throws Exception {LookupService lookupService = new LookupService("C:\\GeoLiteCity.dat");Location locationGoogle = lookupService.getLocation("74.125.39.147");Location locationMicrosoft = lookupService.getLocation("17.251.200.70");System.out.println("Google is located on: " + locationGoogle.city);System.out.println("Apple is located on: " + locationMicrosoft.city);System.out.print("Distance: " + locationGoogle.distance(locationMicrosoft) + " kilometers");}}
And the output:
Not too far as you can see… ;-)Google is located on: Mountain ViewApple is located on: CupertinoDistance: 13.218970226605398 kilometers
No comments:
Post a Comment