【问题标题】:Is there any way to get the real ip of a Chromebook from an Android app?有没有办法从 Android 应用程序中获取 Chromebook 的真实 IP?
【发布时间】:2021-01-12 18:24:00
【问题描述】:

我有一个 Android 应用需要设备的真实 IP,而不是虚拟网络 IP。除非 Chromebook 在公共 IP 上,否则我不想要公共 IP,我只需要 LAN 的私有 IP,但现在我得到了一个虚拟 IP,我猜是 Android 的虚拟网络应用程序。

同时使用WifiManagerNetworkInterface.getNetworkInterfaces() 我得到的只是虚拟IP。调用外部服务器是行不通的,因为这会让我获得公共 IP。

我知道过去有人问过这个问题,但我只是想看看是否有人找到了方法?

【问题讨论】:

  • 不知道这个想法是否可行:鉴于在 ChromeOS Android apps run in a container and not a VM 上,您可能需要查看基于 NDK 的选项来获取私有 LAN ip 地址。
  • 有趣的想法,我不知道从哪里开始,但感谢您的建议。
  • 为什么需要真实IP地址?还有其他针对 Android 设计的网络解决方案,如果我们更好地了解应用程序的目标是什么,其他 API 之一可能更适合。
  • 我需要两台设备相互通信,而辅助设备在网络方面的能力通常非常有限。所以通常用户需要告诉辅助设备 chromebook 的 ip 是什么,为此应用程序必须告诉用户给辅助设备什么 ip。

标签: android google-chrome-os chromebook


【解决方案1】:

这在ChromeOS.dev上有更详细的回答。

要获取分配给 Chrome 操作系统设备连接到的最高优先级网络的 IPv4 地址,请检查 android 系统属性 arc.net.ipv4.host_address,如果需要,还可以检查 arc.net.ipv4.host_gateway。一种方法是:

fun getChromeOsIpAddress() : String {
   val process = ProcessBuilder().command("/system/bin/getprop", "arc.net.ipv4.host_address").start()
   val ipAddress = readInput(process.inputStream)
   return ipAddress
}

fun getChromeOsIpGateway() : String {
   val process = ProcessBuilder().command("/system/bin/getprop", "arc.net.ipv4.host_gateway").start()
   val gatewayAddress = readInput(process.inputStream)
   return gatewayAddress
}

这篇文章在 Apache 2.0 下获得许可。

https://developers.google.com/open-source/devplat

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多