HI!
我正在编写将在android中运行的代码。我想得到我的电脑的IP地址,即连接到同一网络。即我的电话通过wifi连接,电脑通过以太网电缆连接到同一个路由器。我可以通过手机ping我的电脑,反之亦然,但我无法通过代码获取电脑的IP地址或主机名。
我正在使用此
InetAddress inet = InetAddress.getByName( "192.168.0.102");
我收到网络无法访问错误。
请帮忙,因为我被困在了很长时间。 谢谢和问候
的Fas
答案 0 :(得分: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;
}