2015-02-23 2 views
1

В настоящее время я использую следующий код для получения информации о активных сетевых сокетах. До сих пор я подтверждал, что это работает на Nexus 4 (Jellybeans), Nexus 5 (Jellybeans, KitKat и Lollipop) и устройстве Sony Xperia (Jellybeans).Является ли команда «netstat» общедоступной на Android?

Process process = Runtime.getRuntime().exec("netstat -n"); 
process.getOutputStream().close(); 
BufferedReader reader = new BufferedReader(
     new InputStreamReader(process.getInputStream())); 

String line; 
while ((line = reader.readline()) != null) { 
    // Parse line for required info 
} 

reader.close(); 

Могу ли я рассчитывать на приведенный выше код, чтобы правильно функционировать на большинстве реальных Android устройств там?

ответ

4

Команды оболочки Android, большинство из них, находятся в папке/system/bin на устройстве. Vanilla Android использует FreeBSD Toolbox, который содержит netstat, но я не уверен, что вы можете быть на 100% уверены, что он всегда будет вокруг, так как OEM иногда поставляется с различными инструментами. Вот схема инструментов, содержащихся в панели инструментов:

FreeBSD Toolbox diagram

Вы можете пойти по source для ванильного Android, чтобы увидеть, какие корабли с какой версией. Но, как я уже сказал, могут быть различия в том, что каждый производитель поставляется с каждым устройством.

+0

Я не предполагаю, что вы знаете какое-либо место с данными, на которых основные устройства (если они есть) не имеют каких-либо из этих функций? – Saran

+0

Ничего страшного не видел такого списка. Я могу себе представить, что у большинства устройств это будет, хотя это довольно простой инструмент. – Hrafn

+0

Я добавлю, что некоторые устройства поставляются в комплекте с BusyBox, который содержит netstat: http://www.busybox.net/downloads/BusyBox.html – Hrafn

Смежные вопросы