программно Я хотел бы получить список всех активных устройств IP в сети, используя C.Список всех устройств в подсети
Я объясню мою проблему с примером.
пример: У меня 5 устройств в сети с IP в диапазоне от
- устройства 10.0.0.2
- Устройство 10.0.0.3
- Устройство 10.0.0.4
- устройство 10.0.0.5
- устройство 10.0.0.6
Из моей заявки я хотел бы ge т этот список. Моя платформа - это Linux, и я использую C. В настоящее время я не использую никаких сетевых библиотек. Если некоторые библиотеки предоставляют такие утилиты, я использую их одинаково.
Прошу совета по тому же.
Проблема в том, что IP никогда не был предназначен для этого. Различные инструменты используют разные методы в разных сетевых слоях, а некоторые инструменты используют множество методов, чтобы попытаться это сделать. Ни один из методов не является надежным, и некоторые конфигурации (например, частные виртуальные локальные сети) полностью помешают таким попыткам. Если ваше приложение зависит от этого, оно будет терпеть неудачу в некоторых сетях. Простое включение брандмауэра на хосте, который блокирует эхо-сигналы ICMP, не позволит вашему коду обнаружить его с помощью пингов. Глядя на таблицу MAC-адресов в коммутаторе, вы получите MAC-адреса, которые в настоящий момент знает коммутатор. –
@Ron Maupin Я пытаюсь создать серверное приложение, которое будет работать на нескольких устройствах в подсети (подобно домашней сети) с выделенным портом. У меня есть приложения для клиентов, запущенные на других устройствах. Клиентское приложение должно обнаруживать активные устройства и подключаться к портам сервера. Вместо того, чтобы пытаться подключиться ко всем 255 IP-адресам, я хотел бы получить список всех активных IP-адресов, и клиент может подключиться к ним. –
Нет надежного способа определить, какие другие адреса используются. Это звучит как работа для многоадресной рассылки. Вы заинтересованы, чтобы хосты подписались на определенную группу многоадресной рассылки. Используйте правильный инструмент для задания. Кстати: есть только два текущих IP: IPv4 и IPv6. Если вы имеете в виду адреса IPv4, в любой подсети может быть переменное количество адресов IPv4, но никакие подсети не имеют 255 возможных адресов. подсеть '/ 24' имеет 254, подсеть'/25' - 126, а подсеть '/ 23' - 510 возможных адресов. У более короткой маски больше хостов. Он всегда будет '((32-)^2) -2'. –