[Java] IPアドレスが `169.254.xx.yy`になってしまう
Javaプログラムが動いているPCで、そのPCのIPアドレスを取得したい。 InetAddress.getLocalHost() で取得した InetAddress の getHostAddress() メソッドから返ってくるIPアドレスが 169.254.xx.yy (プライベートIPアドレス) になってしまう。 おそらく環境によっては結果は違う (もしかするとWindowsなら意図する動作するかも) と思う。 InetAddress.getLocalHost() は複数NICのことは考えてないのかもしれない。いまどきは仮想NICみたいなのがあるのが普通の気がするので、これでは困る。 ということで、とりあえず以下のようなテストプログラムを作成してみた。 package test; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Enumeration; public class TestGetAddress { public static void main (String[] args) { TestGetAddress test = new TestGetAddress(); test.getLocalAddress(); test.getInterfaces(); } public void getInterfaces () { try { Enumeration<NetworkInterface> list = NetworkInterface.getNetworkInterfaces(); if (list == null ) { return ; } while (list.hasMoreElemen...