Есть ли способ заставить Android-устройство отвечать на сообщения icmp, адресованные широковещательному адресу?

Я хотел бы запрограммировать, чтобы мое устройство отвечало на широковещательные сообщения (например, pinging 192.178.1.255) при подключении к сети Wi-Fi.

Есть ли способ, которым я могу это сделать? Может быть, слушатель, который будет отскакивать назад, или флаг, чтобы установить где-нибудь?

Спасибо.

Ответ 1

Есть ли способ, которым я могу это сделать?

Короче: Да. Но приложить необходимые усилия для интеграции необходимых компонентов.

Основная проблема заключается в том, что вам необходимо прослушивать сетевые пакеты ICMP. Такие функции недоступны с Java и потребуют либо код JNI, либо внешнюю программу. (Насколько мне известно, для этого также требуется внедренное устройство.)

Вам понадобится библиотека или программа, которая может обрабатывать сетевой трафик, например Jpcap (для чего потребуется некоторые изменения для работы на Android). Вы также можете установить и запустить экземпляр tcpdump в фоновом режиме и проанализировать его вывод.

Ответ 2

Приложение не может отправлять/получать запросы ICMP Echo на Android. (Возможно, есть путь на корневых устройствах)

Но если ваша основная цель - реализовать какую-то локальную функцию обнаружения устройств (и ваш код работает на всех устройствах), вы можете использовать широковещательные/многоадресные сообщения UDP.