Reputation: 5427
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
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
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