2012-01-25 74 views
0

可能重複:
How to get a unique computer identifier in Java (like disk id or motherboard id)
Need to identify local machine somehow in java爪哇 - 如何從電腦獲得一個唯一的編號

我想獲得某種獨特的ID爲計算機(即IP地址)。

我曾嘗試:

InetAddress inetAddress = null; 
try { 
    inetAddress = InetAddress.getLocalHost(); 
} catch (final UnknownHostException ex) {} 
return inetAddress.getHostAddress(); 

這給出了一個IP,但是這一次似乎定期更改。有沒有辦法讓一個不變?

在此先感謝!

NOTE:

我需要能夠將此ID與計算機相關聯。

+1

如果用戶購買新的硬盤驅動器,該怎麼辦? – SLaks

+0

請注意,本地IP非常不唯一。 – SLaks

+0

也許MAC地址?儘管如果他們更換了網絡接口,那也可能會發生變化。 –

回答

2

如果機器使用DHCP,IP地址將會週期性更改。您可以使用主機名,或者您可以使用MAC地址,您可以使用該地址java.net.NetworkInterface.getHardwareAddress()

+0

這個地址不會改變嗎? – Confiqure

+1

是的,MAC地址顯然是這裏的最佳選擇。忽略一些罕見的情況(比如虛擬機,某人改變MAC地址),它保證是全球唯一的 - 你還能想要什麼。雖然它仍然可以改變 - 我們可以交換網卡或安裝第二個網卡等。 – Voo

+0

我可以幫助添加代碼嗎?我似乎無法做到。 – Confiqure

0

您是否考慮過使用保證唯一的UUID?

import com.eaio.uuid.UUID; 

public class UUIDTest { 
public static void main(String[] args) { 
    UUID u = new UUID(); 
    System.out.println(u); 
} 
} 
+0

這與機器有什麼關係? –

+0

我需要能夠將此ID與計算機相關聯。所以不行。 – Confiqure

+0

必須將UUID分配給計算機,以便將其編入索引。 「我想爲計算機獲得某種唯一的ID(即IP地址)。」一種模糊的陳述,所以我將其解釋爲需要一個唯一的分配標識符。如果你想從機器本身獲得價值,Martin建議使用MAC地址是最有可能的方式。 –