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 주소를 사용하여 더 잘 만들 수 있는지 궁금 해서요. Java 6에서 사용 가능하다는 것을 알았습니다. 그게 내가 이걸로 갈거야. 시드 UUID MAC 주소입니다. –
무작위 UUID는 모든 합당한 목적에 충분히 적합합니다. UUID를 시드하는 방법을 고안하면 계획을 더 잘 나타낼 수있는 모든 수학을 수행하지 않으면 상황이 악화 될 것입니다. UUID를 사용합니다 .randomUuid() –