2012-02-13 24 views
1

我存儲在使用XMLEncode一個XML文件中的一些網絡數據,因爲它真的很方便。不幸的是,像NetworkInterface這樣的一些類不能被序列化(這是正確的詞?)到xml由XMLEncoder。因此,我考慮簡單地編寫一個標識網絡接口的字符串,並通過使用NetworkInterface.getByName()方法來獲取NetworkInterface實例。Java:NetworkInterface.getName()是一個不會隨時間而改變的唯一標識符嗎?

我的問題:這個名字保證是唯一的,不隨時間而改變(假定沒有變化在本機的網絡配置進行)?也就是說,一臺機器上的這個名稱總是能夠識別相同的網絡接口?

回答

1

的NetworkInterface的名稱是在同一臺機器(你的假設:在網絡配置沒有變化)上獨一無二的,但名稱是不是在所有全球唯一的。如果你需要這樣的東西,看看MAC addresses

但是,NetworkInterface的名稱標識虛擬接口(在Linux系統上,例如以太網eth0,無線ath0),此刻我不明白爲什麼要存儲接口名稱,因爲IP地址分配給這個接口,可以很容易地改變。

+0

我知道MAC地址,分配的IP可能會改變;這就是我考慮存儲接口名稱的原因,因爲從它的名稱中獲取接口的IP非常容易。但我想我會使用MAC地址來確保它正常工作。 – mort 2012-02-13 08:16:27

+2

@mort如果您使用MAC地址或接口名稱,請記住,如果機器從無線更改爲以太網或其他方式,則可能沒有IP分配給您的存儲接口。更好的辦法是獲得所有接口,然後選擇最適合你的接口(即不是本地環路和分配的IP)。 – 2012-02-13 08:21:53

+0

我存儲網絡接口的原因如下:運行軟件的機器通常具有多個網絡接口,這可能會導致RMI出現問題。因此,我想總是爲RMI使用相同的網絡接口。物理網絡配置不太可能改變。 – mort 2012-02-13 08:25:33