gpt4 book ai didi

android - InetAddress.getLocalHost().getHostAddress() 在 Android 中返回 127.0.0.1

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:53 28 4
gpt4 key购买 nike

我的应用程序使用多播来定期发送信标以及加入多播组的主机的协议(protocol)消息和 ip。在 android 设备中,它返回 127.0.0.1。我环顾四周,发现很多人建议更改主机文件。但是,如果是 android,在我的上下文中是不可能的。如何获得设备的真实 IP,而不是环回地址..

private void getLocalAddress()
{
try {
String localHost = InetAddress.getLocalHost().getHostAddress();
servers.add(localHost);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}

最佳答案

修改了几位,这一位正在按需要获取 IPv4 地址。 !inetAddress.isLoopbackAddress() 删除所有环回地址。 !inetAddress.isLinkLocalAddress() 和 inetAddress.isSiteLocalAddress()) 删除所有 IPv6 地址。我希望这会对这里的人有所帮助。

    StringBuilder IFCONFIG=new StringBuilder();
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress() && inetAddress.isSiteLocalAddress()) {
IFCONFIG.append(inetAddress.getHostAddress().toString()+"\n");
}

}
}
} catch (SocketException ex) {
Log.e("LOG_TAG", ex.toString());
}
servers.add(IFCONFIG.toString());

关于android - InetAddress.getLocalHost().getHostAddress() 在 Android 中返回 127.0.0.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9128019/

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