NetworkInterface.getNetworkInterfaces()からの戻り値に関して少し混乱します。私はNetworkInterfaceオブジェクトのリストをフィルタリングして、実際のハードウェアに裏打ちされた「本当の」ものを見つけようとしています。コードはjava.net.NetworkInterface.getNetworkInterfaces() "実際の"インターフェイスを見つける
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
while (e.hasMoreElements()) {
NetworkInterface iface = (NetworkInterface) e.nextElement();
if (!iface.isLoopback() && !iface.isVirtual()) {
byte[] macAddress = iface.getHardwareAddress();
String message = String.format(
"%s %s parent: %s",
iface.getName(),
byteArrayToHexString(macAddress),
iface.getParent());
System.out.println(message);
}
}
...のように見える...と出力のような...
vnic1 00 1C 42 00 00 09 parent: null
vnic0 00 1C 42 00 00 08 parent: null
en1 60 33 4B 20 C4 97 parent: null
私は "VNIC1" と "vnic0" ものは( "本物" ではないことを知っていますParallelsがこのマシンで実行するVMをサポートするためにそこに置かれました)。 NetworkInterfaceを介して、実際のものではないものを検出できる方法があるのですか、それとも、実際の対応点(en1など)と区別できないのでしょうか?私は、その名前がen0またはen1の場合、その本物のような名前に依存するように頼らざるを得ないことを嫌うでしょう。何か案は?
私の究極の目標は、リッチで速く、このゲームをチェックアウトすることですが、それは今は問題ではありません。 MACアドレスのバイトを取得して、UUIDの作成をシードしようとします。 java.util.UUIDはデフォルトでは乱数ですが、MACアドレスを使ってよりうまくいくかどうか疑問に思っていました。それは私がこれで行くところです。シードUUIDのMACアドレス。 –
ランダムなUUIDは、すべての合理的な目的に十分に十分です。 UUIDを播種する独自の方法を発明することは、あなたのスキームがより良いことを示すために数学をすべて実行していない限り、事態を悪化させることはほぼ確実です... UUID.randomUuid() –