android - 有没有办法从 Android 应用程序中获取 Chromebook 的真实 IP?
问题描述
我有一个 Android 应用程序需要设备的真实 IP,而不是虚拟网络 IP。除非 Chromebook 位于公共 IP 上,否则我不想要公共 IP,我只需要 LAN 的私有 IP,但现在我得到了一个虚拟 IP,我猜是 Android 的虚拟网络应用。
使用两者WifiManager
,NetworkInterface.getNetworkInterfaces()
我得到的只是虚拟IP。调用外部服务器是行不通的,因为这会让我获得公共 IP。
我知道过去有人问过这个问题,但我只想检查是否有人找到了方法?
解决方案
这在ChromeOS.dev上有更详细的回答。
要获取分配给 Chrome OS 设备连接到的最高优先级网络的 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 下获得许可。
推荐阅读
- python - 使用 Drive API 从 Google Drive 下载文件后无法重命名或移动文件
- json - 如何从同一个 DocumentContext 对象中提取和更新?
- linux - FBGrab 提供黑色 .png 图像
- python - 在for循环Python中修改和运行函数
- sql - 连接 3 个表时 SQL 对象名称无效
- swift - Swift:如何将 NSView 转 45 度?
- c++ - 找不到“Leptonica”提供的包配置文件
- kibana - Elasticsearch 有条件地查询多个索引
- python - Python,检查是否在'with'语句中调用
- javascript - 如何从 Bing Maps API 获取 JSON?