Javaを使用してインターネットに接続されているネットワークインターフェイスをどのように判断しますか?たとえば、私は実行します
InetAddress.getLocalHost().getHostAddress();
Eclipse内では、これは私が意図したもの、192.168.1.105を正確に返します。ただし、これをjarファイルにパッケージ化してプログラムを実行すると、コードは169.254.234.50を返します。これを調べてみると、これが私のマシンのVMware仮想イーサネットアダプタインターフェイスのIPアドレスであることがわかりました。
インターネットに接続されているインターフェイスを判別すると同時に、コードの移植性を維持する方法はありますか?
インターフェースの比較
インターフェイス[net4]
display name : Intel(R) Centrino(R) Ultimate-N 6300 AGN
MTU : 1500
loopback : false
point to point: false
up : true
virtual : false
multicast : true
HW address : 00 24 D7 2C 5F 70
INET address (IPv4): 192.168.1.105
host name : MyComputer
canonical host name : MyComputer
loopback : false
site local : true
any local : false
link local : false
multicast : false
reachable : true
インターフェイス[eth5]
display name : VMware Virtual Ethernet Adapter for VMnet1
MTU : 1500
loopback : false
point to point: false
up : true
virtual : false
multicast : true
HW address : 00 50 56 C0 00 01
INET address (IPv4): 169.254.234.50
host name : MyComputer
canonical host name : MyComputer
loopback : false
site local : false
any local : false
link local : true
multicast : false
reachable : true
サイトlocal=trueおよびlinklocal= falseの3番目のVMwareインターフェースがあるため、これらのフィールドも役に立ちません。