gpt4 book ai didi

android - 如何在 android 中创建 InetAddress 对象?

转载 作者:行者123 更新时间:2023-11-29 18:21:04 31 4
gpt4 key购买 nike

嗨!

我正在编写将在 android 中运行的代码。我想获取我的电脑的 IP 地址,即连接到同一网络。即我的手机通过 wifi 连接,电脑通过以太网电缆连接到同一路由器。我可以通过手机 ping 我的电脑,反之亦然,但我无法通过代码获取我电脑的 IP 地址或主机名。

我正在用这个

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

我收到网络不可达错误。

请帮忙,因为我被困在里面很长时间了。感谢和问候

最佳答案

您可以尝试将字符串 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;
}

关于android - 如何在 android 中创建 InetAddress 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368849/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com