2011-03-20 60 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; 
}