Sunucu X üzerinde çalışan bir bağımsız komut satırı java uygulamasına sahibim. Ve bu, çalıştığı makinenin benzersiz kimliğini bilmem için gereklidir. Bu kimlik nasıl alınır? Belki bir karma gibi bir şey. İçinde kimliği olan bir dosya gibi bir şey tutmak istemiyorum. IP'ye, donanıma, vs. bağlı olmayan bu benzersiz kimliği elde etmenin bir yolu var mı?java başvuru için benzersiz bir sunucu kimliği olsun
cevap
Sunucunun MAC adresini okuyabilir ve benzersiz bir anahtar olarak kullanabilirsiniz.
Aşağıdaki kod parçacığı http://www.tutego.de/blog/javainsel/2013/12/mac-adressen-auslesen/ olası bir uygulamayı göstermektedir.
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);
}
Kaynağın Almanca olduğu için üzgünüm, ancak bir ingilizce dökümantasyonunun da mevcut olduğundan eminim. nedeniyle
DÜZENLEME yorum yapmak:
Elbette ayrıca MAC adresi çiftleri sahip olabileceği dikkate alınması gereken gerekmektedir.
olarak aşağıdaki bağlantıyı olası nedenleri https://serverfault.com/questions/462178/duplicate-mac-address-on-the-same-lan-possible
bu sorun için bir çözüm pragmatik bir yol olduğu gibi MAC adresini kullanarak iki şekilde de göstermektedir.
kullanma karma-yöntemler: http://preshing.com/20110504/hash-collision-probabilities/
veya
GUID'lerini
: Ayrıca Is it safe to assume a GUID will always be unique?Olası yinelenen bir% 0,0 riskini garanti etmiyoruz.
MAC adresleri kullanıcı tarafından değiştirilebilir ve sadece bir alt ağ içinde benzersiz olması garanti edilir. – EJP
@EJP Bu sorunun söz konusu olacağını biliyordum ve kesinlikle bir sorun olabilir. Ancak bir çatışmanın olasılığı oldukça küçüktür. – Diversity
Sanallaştırılmış bir dünyada iseniz, VMWare deyin, vm'yi yeni bir ana bilgisayara taşıyın, mac adresini ve ayrıca belirli yapılandırma ayarlarının doğru olması durumunda diğer değişiklikleri değiştirin. –
- 1. Java tabanlı benzersiz bir bilgisayar kimliği donanımı
- 2. Bir android etkinliğinin benzersiz kimliği
- 3. JavaScript Benzersiz Tarayıcı Kimliği
- 4. Benzersiz bilgisayar kimliği
- 5. Python'da benzersiz oturum kimliği
- 6. çekilebilir başvuru için kaynak kimliği tarz nitelik
- 7. Benzersiz kullanıcı kimliği oluşturmak için UDID kullanma
- 8. E-postaların benzersiz kimliği nedir?
- 9. Paypal'ın Jeton Kimliği Benzersiz mi?
- 10. Java, set kimliği için JButton
- 11. raylar3-jquery-autocomplete formtastic ile başvuru kimliği
- 12. Aygıt belirteci, aygıt kimliği kadar benzersiz mi?
- 13. Her birzon eko cihazı için benzersiz cihaz kimliği edinin
- 14. Yetkili kullanıcının benzersiz belirteci (kimliği) nasıl alınır?
- 15. 8 karakteristik benzersiz Java in String
- 16. Java web başvuru formu doğrulama onaylaması
- 17. JS veya Jquery benzersiz bir span kimliği oluştur
- 18. Uygulama kimliği ve Android için Cihaz kimliği kombinasyonu ile benzersiz kimlik
- 19. Benzersiz Java Java sistem zamanı kullanarak dosya?
- 20. Ekipler arasında bir Slack kanal kimliği benzersiz mi?
- 21. Java RMI/erişim Bir RMI sunucu oluşturmak çalışıyorum, ama zamanında şu istisna olsun
- 22. Java JLabel - benzersiz bir tanımlayıcı ekleyin
- 23. İstemci kimliği ne için gereklidir?
- 24. Bir sınıf için başvuru gönderme
- 25. jvm içinde Java nesne kimliği
- 26. Sunucu tarafındaki GAE kimliği doğrulanmış kullanıcı değil, istemci tarafında
- 27. Grails groovy cümlede kimliği ile alan değeri olsun
- 28. Haberleşme Seçenekleri: Android'in bir istemci Java sunucu
- 29. Java HTTP/2 Sunucu Soketi
- 30. xlarge Başvuru için
Neden donanıma bağlı olmak istemiyorsunuz, ör. Mac adresi? –
Kimlik tekrarlanabilir mi (determinist)? Değilse, sadece mevcut bir UUID'yi yaratın veya kullanın (linux altında 'blkid' komutuna bakabilirsiniz). –