Я изучаю сокеты на C, но не могу найти никакой информации о получении списка всех подключенных устройств в моей сети WLAN (я использую Linux).
Кто-нибудь может предоставить мне информацию или где я могу начать учиться?
Вам необходимо проверить все ассоциации на вашей беспроводной точке доступа (маршрутизатор Wi-Fi).
Большинство маршрутизаторов Wifi имеют веб-интерфейс, на котором отображаются все связанные устройства.
Если у вас есть telnet
/ssh
/console
доступ к вашей точке доступа, вы можете попробовать одно из следующих в зависимости от вашего оборудования Wi-Fi и драйвера.
Беспроводная карта Broadcomm:
iw assoclist
Беспроводная карта Atheros:
wl_atheros assoclist
Вы также можете попробовать iwlist(8)
Linux-программа для получения информации от беспроводного интерфейса.
iwlist [interface] scan
или же
iwlist [interface] ap/accesspoint/peers
Пожалуйста, обратитесь к документации вашего драйвера Wi-Fi для деталей поддержки.
Посмотрите в кэш ARP. ARP означает «Протокол разрешения адресов», и именно так машины превращают IP-адрес в аппаратный адрес.
Не существует действительно универсального способа получить список всех сетевых устройств, но ARP подходит близко.
Пинг или просто открытие и закрытие соединения с хорошо известным портом на каждом адресе в вашей подсети довольно быстро заполнило бы кэш ARP …
Если вы знаете IP-адреса вашей сети, я бы посоветовал вам выполнить широковещательный пинг на ваш сетевой широковещательный адрес и отметить устройства, которые отвечают.
Например, если ваша сеть 192.168.1.0/24
Ваш широковещательный IP-адрес будет `192.168.1.255
а команда на linux есть ping -b 192.168.1.255
, Затем вы можете получить результат команды в вашей программе и поработать над ним, чтобы извлечь ip других подключенных устройств.
Отказ от ответственности: Некоторые устройства могут быть настроены так, чтобы никогда не отвечать на запрос ping, тогда они будут невидимы с помощью этого метода …
Редактировать : Если вы используете IPv6, вы можете посмотреть на Протокол обнаружения соседей (НДП) какой вид замены ARP.
Вы должны рассмотреть возможность использования существующих инструментов в Linux env. Для начала посмотрите здесь: Получить все подключенные IP-адреса на машине Linux
Не изобретай велосипед заново. Если ты можешь.
man netstat