2013-08-16 264 views
0

我有一個程序要求它知道它是IP地址。然而,當我使用獲取非本地IP地址Java

InetAddress current_addr = addresses.nextElement(); 

它返回

127.0.1.1 

這是不是非常有幫助。我如何從java獲得我的非本地IP地址?

+0

這個問題已經被回答過很多次了。例如,請參閱http://stackoverflow.com/questions/18254848/getting-ip-in-java/18255093#18255093 – vinay

+0

您是否考慮嘗試更多的元素? – EJP

回答

1

你明白了什麼,當你使用:

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?

+0

我認爲提問者正在尋找外部IP地址 – vinay

+0

這隻會返回您的路由器分配的IP。 –

+0

@JoshM不,它會返回你的機器地址。我測試了這個,它返回192.168.2.10,而我的路由器地址是192.168.2.1 –