2015-04-17 120 views
0

我有一個Java應用程序需要特定計算機的IP地址才能在Ubuntu中進行通信。我嘗試使用Jjava函數InetAddress.getLocalHost().getHostAddress()來獲取所需機器的IP地址,但它返回127.0.0.1的環回地址。我係統的外部IP地址是192.168.1.1。 有沒有什麼函數可以只檢索後者?無法獲取計算機的IP地址

+0

爲什麼?你爲什麼認爲你需要自己機器的IP地址?你的意思是你需要獲得另一臺機器的IP地址嗎?如果是這樣,'getLocalHost()'很難繼續下去。 – EJP

+0

你有沒有使用Google呢?除此之外,這可能已經在這個社區回答了,請參考:http://stackoverflow.com/questions/2381316/java-inetaddress-getlocalhost-returns-127-0-0-1-how-to-get-real-ip – Nirmal

+1

我有一個解決方案導入java.net.InetAddress; import java.net。*; import java.util。*; 類的IPAddress { 公共靜態無效主要(字符串ARGS [])拋出異常 { INT I = 0;枚舉en = NetworkInterface.getNetworkInterfaces(); (en.hasMoreElements()){ // System.out.println(i); NetworkInterface ni =(NetworkInterface)en.nextElement(); Enumeration ee = ni.getInetAddresses(); int j = 0; (ee.hasMoreElements()){InetAddress ia =(InetAddress)ee.nextElement(); if(i == 0 && j == 1) {System.out.println(ia.getHostAddress()); } J ++;} 我++; } } } –

回答

-2
/** 

The following code solved my problem 


**/ 

import java.net.InetAddress; 
import java.net.*; 
import java.util.*; 

class IPAddress 
{ 
    public static void main(String args[]) throws Exception 
    { 

int i=0;  
Enumeration en = NetworkInterface.getNetworkInterfaces(); 
while(en.hasMoreElements()){ 

//System.out.println(i); 
    NetworkInterface ni=(NetworkInterface) en.nextElement(); 
    Enumeration ee = ni.getInetAddresses(); 
int j=0; 

while(ee.hasMoreElements()) { 
     InetAddress ia= (InetAddress) ee.nextElement(); 
if(i==0 && j==1) 
    { System.out.println(ia.getHostAddress()); 

    } 

j++;} 

i++; 
} 

    } 
} 
+0

僅適用於您需要的IP地址是第一個NIC的第二個IP地址的一種特定配置。這可能會在這臺主機上一夜之間發生變化,而在另一臺主機上會完全不同這不是一個可行的解決方案。 – EJP

+2

先生EJP .... telll我可行的解決方案..因爲我需要實現它在不同的主機有不同的網絡接口 –

+0

*你*告訴我* *我*問題的答案。 *爲什麼*你需要你的機器的本地地址? – EJP

相關問題