2011-03-20 35 views
1

嗨!如何在android中創建InetAddress對象?

我正在編寫將在android中運行的代碼。我想獲取我的電腦的IP地址,即連接到同一個網絡。即我的手機通過WiFi連接,PC通過以太網線連接到同一路由器。我能夠從我的手機ping我的電腦,反之亦然,但我無法通過代碼獲取我的電腦的IP地址或主機名。

我用這

InetAddress inet = InetAddress.getByName("192.168.0.102"); 

我得到網絡不可達的錯誤。

請多幫忙,因爲我被困在裏面很久。 感謝和問候

的Fas

回答

3

你可以嘗試將字符串轉換成IP整數,然後構建由包含IP地址字節InetAddress對象。這裏的代碼

InetAddress inet = intToInetAddress(ipStringToInt("192.168.0.102")); 

public static int ipStringToInt(String str) { 
    int result = 0; 
    String[] array = str.split("\\."); 
    if (array.length != 4) return 0; 
    try { 
     result = Integer.parseInt(array[3]); 
     result = (result << 8) + Integer.parseInt(array[2]); 
     result = (result << 8) + Integer.parseInt(array[1]); 
     result = (result << 8) + Integer.parseInt(array[0]); 
    } catch (NumberFormatException e) { 
     return 0; 
    } 
    return result; 
} 

public static InetAddress intToInetAddress(int hostAddress) { 
    InetAddress inetAddress; 
    byte[] addressBytes = { (byte)(0xff & hostAddress), 
          (byte)(0xff & (hostAddress >> 8)), 
          (byte)(0xff & (hostAddress >> 16)), 
          (byte)(0xff & (hostAddress >> 24)) }; 

    try { 
     inetAddress = InetAddress.getByAddress(addressBytes); 
    } catch(UnknownHostException e) { 
     return null; 
    } 
    return inetAddress; 
}