我有一個獨立的命令行java應用程序運行在服務器X上。它需要我知道它運行的機器的唯一ID。如何獲得此ID?也許像一個哈希。我不想在裏面保存一些類似ID的文件。有沒有辦法讓這個獨特的ID不依賴於IP,硬件等?java得到唯一的服務器ID供參考
5
A
回答
2
您可以讀出服務器的MAC地址,並將其用作唯一密鑰。
以下代碼片段取自http://www.tutego.de/blog/javainsel/2013/12/mac-adressen-auslesen/顯示了一個可能的實現。
for (NetworkInterface ni : Collections.list(NetworkInterface.getNetworkInterfaces())) {
byte[] adr = ni.getHardwareAddress();
if (adr == null || adr.length != 6)
continue;
String mac = String.format("%02X:%02X:%02X:%02X:%02X:%02X",
adr[0], adr[1], adr[2], adr[3], adr[4], adr[5]);
System.out.println(mac);
}
對不起,源代碼是德文的,但我很確定這裏也有英文文檔。
由於編輯評論:
它當然必須要考慮的是還其MAC地址可以有重複。
下面的鏈接顯示了可能的原因 https://serverfault.com/questions/462178/duplicate-mac-address-on-the-same-lan-possible
使用MAC地址作爲針對此問題的一個解決方案是一種實用的方法無論哪種方式。
使用散列的方法: http://preshing.com/20110504/hash-collision-probabilities/
或
的GUID:Is it safe to assume a GUID will always be unique?
也不保證可能的重複0.0%的風險。
相關問題
- 1. 生成隨機但唯一的號碼以供參考ID
- 2. ASP.NET會話ID - 跨服務器唯一
- 3. Java集合確保唯一性,同時提供參考
- 4. 服務參考
- 5. ASMX Web服務 - 沒有獲得參考
- 6. CQ5 ECMA腳本獲得服務參考
- 7. Angularfire得到$推後唯一的ID
- 8. XML唯一性和參考
- 9. Google Genomics API - 內部服務器錯誤+參考ID
- 10. MVC3 - 服務參考
- 11. 獲得由唯一的ID
- 12. 爲Web參考添加服務參考
- 13. 如何生成一個唯一的ID用作服務器端的會話ID?
- 14. 在服務器端獲取唯一的會話ID /密鑰
- 15. JMeter - 設置每個服務器的唯一ID
- 16. 設置開發服務器參考
- 17. 基準HTTP服務器,參考測試
- 18. 不能得到工作參考OSGi服務
- 19. 通過C#服務參考消費Java Web服務
- 20. 獲得唯一ID列表
- 21. WCF服務參考和參考同一個項目
- 22. randomUUID是否提供唯一的ID?
- 23. 如何在DXCore中獲得唯一的SourceFile參考?
- 24. SOAP服務作爲服務參考.net
- 25. Firebase - 跨列表的唯一參考
- 26. Exec和唯一的變量應參考
- 27. 帶參考參數的C#Web服務
- 28. Silverlight 3 Ria服務參考
- 29. Windows Phone服務參考
- 30. SQL報告服務參考
爲什麼你不想依賴於硬件,例如MAC地址? –
身份證是否可重複(確定性)?如果沒有,只需創建或者使用現有的UUID(在linux下你可以看看'blkid'命令)。 –