Есть ли способ получить IP-адрес (v4) интерфейса в файловой системе Android? Я знаю, что мог бы использовать ifconfig или netcfg, но я хотел бы использовать инструмент мониторинга, который может только обращаться к файлам, но не выполнять команды.
У меня нет Android, чтобы протестировать, но Linux предлагает:
cat /proc/net/fib_trie
Затем вывод можно отфильтровать с помощью grep, например
cat /proc/net/fib_trie|grep '|--' | grep -vE ' 127|\.0[^0-9.]*$|\.255[^0-9.]*$'
Согласно сообщению на SO , cat /proc/net/tcp
вернет его в
второй столбец с заголовком «local_address», например, «CF00A8C0:0203».
Часть после «:» — это номер порта.
Из остальных используйте последние два (C0) в качестве шестнадцатеричного числа, например, C0 — это 192, что является началом адреса в этом примере.
Дальше:
IP-адрес отображается как четырехбайтное шестнадцатеричное число с прямым порядком байтов; то есть наименее значащий байт указан первым, поэтому вам потребуется изменить порядок байтов, чтобы преобразовать его в IP-адрес.
Номер порта представляет собой простое двухбайтовое шестнадцатеричное число.
АлваХенрик
АлваХенрик
Иззи
/proc/net/arp
, но я не уверен, что это имеет такое же ограничение. Что должно работать, так это просмотр информации об устройстве в/proc/net/dev
, и выбор желаемого интерфейса (например,tiwlan0
для WiFi в большинстве случаев).АлваХенрик
Иззи
ls
on/proc/net
(и/sys/...
), чтобы проверить перспективных кандидатов.пользователь938500
Иззи
/proc/net/tcp
что-то хранится (remote_addr равен 0.0.0.0, поэтому «бездействует»), снова используя шестнадцатеричные значения (как описано в моем ответе). В моем случае0100007F
aslocal_address
, что соответствует127.0.0.1
aka localhost. Похоже, это то, что вам нужно?