Сеть на уровне пакетов в Android - PullRequest
5 голосов
/ 23 октября 2011

Я знаю, как разрабатывать в Android и использовать Apache HTTP lib, но я хочу пойти дальше, овладеть адаптером беспроводного интерфейса и иметь возможность отправлять и получать пакеты по беспроводной сети. Я знаю, что это возможно, поскольку на рынке Android есть приложения-снифферы. Я много смотрел и гуглил, но не могу понять, как начать. Удивительно, но никто и раньше не задавал этот вопрос на SO.

Полагаю, нет Android-API, который сделал бы это для вас. Пожалуйста, предложите способ отправки / получения пакетов в Android или опубликовать ссылки на любые такие ресурсы.

Спасибо!

Примечание : я знаю, что java.net api можно использовать в Android (хотя я раньше не использовал его), но это не дает мне такой доступ, какой я хочу.

Ответы [ 3 ]

2 голосов
/ 24 октября 2011

Нет способа сделать это со стандартным SDK / NDK.

На рутированном устройстве вы можете вызвать tcpdump или другое приложение на основе libpcap. Не поддерживается способ предоставить приложениям Java необходимые привилегии на производственном устройстве Android.

Например, это сообщение в блоге описывает, как использовать tcpdump для базового захвата пакетов на Android.

1 голос
/ 30 мая 2012

Android OS 4.0 или более поздняя версия предоставляет VpnService, с помощью которого вы можете отслеживать сетевой трафик. Приложение, предоставленное на http://www.taosoftware.co.jp/en/android/packetcapture/, использует VpnService для сбора данных.

1 голос
/ 23 октября 2011

Вы смотрели на NDK? Может быть, вы можете делать то, что вы хотите в C (++).

...