0

ルーターが私のPCに与えたIPアドレスを取得するために、Web上で2つの例を見つけました。コードは次のとおりです。

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

}

InetAddress inetAddr = InetAddress.getLocalHost(); を初期化した後に読んだことがあります。メソッド inetAddr.getHostAddress() を使用して、ルーターから指定された IP アドレスを取得できます (ubuntu のターミナルに ifconfig を書き込む、Windows の ipconfig など)。代わりに、ループバック アドレスが返されます...(127.0 .0.1) なぜ?

4

2 に答える 2

4

PC には複数のインターフェイス (少なくとも 2 つ) と複数の IP アドレスがあります (もちろん、ネットワークに接続されている場合)。通常、(ループバック インターフェイスで) にlocalhost解決され、使用しているさまざまなメソッドがそれを返します。127.0.0.1

以下は、マシン上のすべてのインターフェースとそれらに割り当てられた IP アドレスを示します。

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());
        }
    }
}
于 2013-02-09T19:34:17.023 に答える
1

通常、ホストにはループバックインターフェイスを指す名前があります。DHCPサーバーがIPアドレスを割り当てました。DHCPクライアントの構成によっては、ホストにも新しい名前が付けられる場合があります。

于 2013-02-09T19:42:36.227 に答える