正確的本地IP地址我想從我的Java小程序確定本地IP地址。問題是當同一臺機器上有幾個IP地址時,它具有局域網和互聯網連接 (palm,VMWare ...)。獲得從Java小程序
這裏是我的測試:
public static void main(String[] args) {
try {
String hostName = InetAddress.getLocalHost().getHostName();
System.out.println("HostName = " + hostName);
System.out.println("HostAddressLocal = " +
InetAddress.getLocalHost().getHostAddress());
InetAddress[] inetAddresses = InetAddress.getAllByName(hostName);
for (InetAddress inetAddress : inetAddresses) {
System.out.println("hostAddress = " + inetAddress.getHostAddress());
}
} catch (Exception e) {
e.printStackTrace();
}
}
結果是:
HostName = xxxx
HostAddressLocal = xx.xx.xx.xx
hostAddress = 10.10.11.51
hostAddress = 192.168.23.1
hostAddress = 192.168.106.1
其中XX.XX.XX.XX是不正確的地址。正確的是10.10.11.51。
編輯迴應jarnbjo:
你的水晶球說的是事實。你瞭解我的問題。客戶端可以通過代理連接,所以我不能使用你的第一點。如果我在我的電腦上執行下面這段代碼:
Socket s = new Socket("www.w3c.org", 80);
InetAddress ip = s.getLocalAddress();
System.out.println("Internet IP = " + ip.toString());
s.close();
我有這樣的結果:
Internet IP = /127.0.0.1
而且不10.10.11.51
你的意思是小程序嗎?主要和能夠訪問本地UP地址? –
我們也有這個問題。 – KLE
你到底在做什麼?你爲什麼需要這些信息?如果用戶沒有本地地址會怎麼樣?如果用戶有很多接口和許多本地地址會怎麼樣?如果用戶擁有IPv6(每個接口可能有多個地址)會怎麼樣?你的程序有一些設計問題,它不應該依賴這個特性來正確工作。 – Juliano