android - 如何获取默认接口(interface)及其inet地址?

标签 android linux sockets

“默认接口(interface)”指的是 ppp0:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 wlp3s0
172.30.0.1      0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 wlp3s0

当我访问 WAN 而不是 LAN 时,默认使用哪一个。 我需要在 Android 上运行它,因此无法使用 getifaddrs,因为 ifaddrs.h 在 Android NDK 中

最佳答案

呃,我不知道接口(interface)是否可以标记为“默认”,但是有很多方法可以在不使用 getifaddrs 的情况下检索接口(interface)列表。

您可以执行“ip link show”命令并解析结果(或“ifconfig”)。 您可以转到“/sys/class/net”,其中每个目录代表一个接口(interface)(这些目录下有可以帮助您的文件)。

我不知道 Android 是否像 Debian 一样工作,我建议您通过 Android NDK 或系统命令(如“ip”或“ifconfig”)找到一种方法,因为像/net 或/proc 这样的目录可能会在不同操作系统版本之间发生变化(即使它并不常见,我不记得见过)。

关于android - 如何获取默认接口(interface)及其inet地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48337061/

相关文章:

linux - Docker macvlan 中绑定(bind)地址

c++ - 我的程序不发送消息或不接收到套接字,ip 是 127.0.0.1

用于套接字聊天的python最小数据类型

PHP 从 Windows 机器上的套接字读取

android - 单击按钮时图库滚动?

使用现有网站进行 Android 应用程序身份验证

android - 视频聊天 IOS/Android Webrtc。谷歌 WebRTC 示例

linux - 使用通配符限制 nginx 上的用户

php - 请求澄清 Unix 开关 -t -i

android - 如何使用android开发者演示