Я вспомнил о проблеме, которую как-то давно не смог решить. Щас подумал что может на тостере мне помогут. Проблема вот в чём. Я хотел отследить сетевые пакеты, которые идут от устройства. Позже я сделал консольную утилиту и установил её через adb и запустил и увидел какие программы отправляют данные. Но всё же проблема осталась. Я делал специальные разрешения для устройства типа internet или типа того, чтобы сетевые функции были доступны. Я сделал root на устройстве и дал разрешение для одной программы, в которой требовался root. И вот в коде я пишу так.
int socket = socket ( AF_PACKET, SOCK_RAW, htons ( ETH_P_ALL ) );
Но он возвращает ошибку, правда я не помню какую. Но вроде что не разрешено использовать такой сокет, но почему? ROOT доступ же есть! Я не пойму также как тогда сделали программу, которая будит компьютеры в локальной сети, с помощью например magic пакета. Но чтобы сделать такой пакет, нужен доступ к уровню канальному вроде. Так как в спящем режиме доступны только mac адреса хостов. Напишите пожалуйста, мне очень интересно как всё это работает. Да кстати насчёт пробуждения компов, там root доступ не требуется, тогда как он составляет пакет я не пойму?