127.0.0.1はループバックアダプターです。「これは私のIPアドレスは何ですか?」という質問に対する完全な正しい応答です。
問題は、その質問に対するの複数のの正解があることです。
EDIT:getLocalHost
ためのドキュメントは言う:
セキュリティマネージャが存在する場合、その checkConnectメソッドは、操作があるかどうかを確認するためにその 引数として ローカルホスト名および-1と呼ばれています が許可されています。操作が でない場合、ループバックアドレス を表すInetAddressが返されます。
権限の変更による動作の変更は可能でしょうか?
編集:私はNetworkInterface.getNetworkInterfaces
がすべての可能性を列挙するために必要なものだと信じています。ここにいる
import java.net.*;
import java.util.*;
public class Test
{
public static void main(String[] args)
throws Exception // Just for simplicity
{
for (Enumeration<NetworkInterface> ifaces =
NetworkInterface.getNetworkInterfaces();
ifaces.hasMoreElements();)
{
NetworkInterface iface = ifaces.nextElement();
System.out.println(iface.getName() + ":");
for (Enumeration<InetAddress> addresses =
iface.getInetAddresses();
addresses.hasMoreElements();)
{
InetAddress address = addresses.nextElement();
System.out.println(" " + address);
}
}
}
}
(私はEnumeration<T>
タイプが直接働くのが、どれだけひどい忘れて!)
:ここでは、仮想アドレスを示していない例ですが、「メイン」のインターフェイスのために働きます今私のラップトップ上の結果:
lo:
/127.0.0.1
eth0:
/169.254.148.66
eth1:
eth2:
ppp0:
/10.54.251.111
(私はそれがどの非常機密情報を配っています:)
とは思いません3210
使用するネットワークインターフェイスが分かっている場合は、NetworkInterface.getByName(...)
に電話し、そのインターフェイスのアドレスを確認します(上記のコードを参照)。
上記のループでは、NetworkInterface#isLoopback()をチェックするだけでループバックをスキップすることもできます。 – omerkudat
IPアドレスの前にスラッシュがあるのはなぜですか? –
@MatíasInetAddressオブジェクトのJava toStringは、ドット区切りの番号だけを取得するためにaddress.getHostAddress()を使用します。 –