Java: Get my own ip address in my home network

﹥>﹥吖頭↗ 提交于 2019-12-12 02:26:24

问题


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?


回答1:


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());
        }
    }
}



回答2:


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.



来源:https://stackoverflow.com/questions/14790440/java-get-my-own-ip-address-in-my-home-network

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!