我有一個程序要求它知道它是IP地址。然而,當我使用獲取非本地IP地址Java
InetAddress current_addr = addresses.nextElement();
它返回
127.0.1.1
這是不是非常有幫助。我如何從java獲得我的非本地IP地址?
我有一個程序要求它知道它是IP地址。然而,當我使用獲取非本地IP地址Java
InetAddress current_addr = addresses.nextElement();
它返回
127.0.1.1
這是不是非常有幫助。我如何從java獲得我的非本地IP地址?
你明白了什麼,當你使用:
InetAddress IP = InetAddress.getLocalHost();
String ipAddress = IP.getHostAddress();
它應該理想地給你,如果你沒有超過一個網絡接口的IP地址。
我測試了它在本地,這讓我在我的機器的正確的IP地址即
192.168.2.10
如果你有多個網絡接口,那麼你可以嘗試使用NetworkInterface類,這裏是樣本:
從相關的帖子採取Enumeration<NetworkInterface> n = NetworkInterface.getNetworkInterfaces();
for (; n.hasMoreElements();)
{
NetworkInterface e = n.nextElement();
System.out.println("Interface: " + e.getName());
Enumeration<InetAddress> a = e.getInetAddresses();
for (; a.hasMoreElements();)
{
InetAddress addr = a.nextElement();
System.out.println(" " + addr.getHostAddress());
}
}
來源:java InetAddress.getLocalHost(); returns 127.0.0.1 ... how to get REAL IP?
我認爲提問者正在尋找外部IP地址 – vinay
這隻會返回您的路由器分配的IP。 –
@JoshM不,它會返回你的機器地址。我測試了這個,它返回192.168.2.10,而我的路由器地址是192.168.2.1 –
這個問題已經被回答過很多次了。例如,請參閱http://stackoverflow.com/questions/18254848/getting-ip-in-java/18255093#18255093 – vinay
您是否考慮嘗試更多的元素? – EJP