SagittariusA
SagittariusA

Reputation: 5427

Java: Get my own ip address in my home network

I have find two examples on the web to get the ip address the router has given to my pc. Here is the code:

import java.net.InetAddress;
import java.net.UnknownHostException;

public class tryNet {

public static void displayStuff(String whichHost, InetAddress inetAddr) {
    System.out.println("---------------------");
    System.out.println("host: " + whichHost);
    System.out.println("Canonical host name: " + inetAddr.getCanonicalHostName());
    System.out.println("Host Name: " + inetAddr.getHostName());
    System.out.println("Host Address: " + inetAddr.getHostAddress());
    System.out.println("---------------------");
}


public static void main(String argv[]) {
    try {
        InetAddress inetAddr = InetAddress.getLocalHost();
        displayStuff("localhost", inetAddr);
    }

    catch (UnknownHostException e) {
        e.printStackTrace();
    }
}

}

I have read that after having initialized InetAddress inetAddr = InetAddress.getLocalHost(); I can use the method inetAddr.getHostAddress() to get my ip address, the one given by my router (such as write ifconfig in the terminal in ubuntu, or ipconfig in windows) Instead it returns me my loopback address...(127.0.0.1) Why?

Upvotes: 0

Views: 4248

Answers (2)

kofemann
kofemann

Reputation: 4423

Typically you host has a name which points to loopback interface. A DHCP server assigned an IP address. Depending on your dhcp client configuration host may take a new name as well.

Upvotes: 1

Brian Roach
Brian Roach

Reputation: 76898

Your PC has multiple interfaces (at least two) and multiple IP addresses (If it's plugged into a network, of course). Typically localhost is going to resolve to 127.0.0.1 (on the loopback interface) and the various methods you are using are going to return that.

The following will show you all the interfaces on the machine and the IP addresses assigned to them:

public static void main(String[] args) throws InterruptedException, IOException
{
    Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
    while (e.hasMoreElements())
    {
        NetworkInterface n = e.nextElement();
        System.out.println(n.getName());
        Enumeration<InetAddress> ee = n.getInetAddresses();
        while (ee.hasMoreElements())
        {
            InetAddress i = ee.nextElement();
            System.out.println(i.getHostAddress());
        }
    }
}

Upvotes: 4

Related Questions