Список всех IP-адресов (т.е. устройств), присутствующих в локальной сети

Я хочу получить список всех IP-адресов (т.е. устройств), присутствующих в локальной сети. Я не хочу использовать nmap, другие сетевые инструменты. А также я не хочу пинговать каждый IP-адрес в диапазоне подсети и находить действующие IP-адреса? Есть ли способ с помощью C, C ++?

1

Решение

Не существует надежного способа определения всех хостов в локальной сети. Есть много способов угадать ваших соседей, каждый из которых имеет свои преимущества и недостатки. Но вы никогда не будете уверены, что получите все хосты. например, вы можете попытаться пропинговать трансляцию, но кто-то не смог ответить на пинг. Поэтому нет надежного способа сделать это. Есть несколько способов, которые полагаются на команды в терминале.
Вы можете попробовать использовать nmap. Хотя для этого нужно установить nmap:

nmap -sP 192.168.1.*

Это делает простое сканирование ping во всей подсети, чтобы увидеть, какие все хосты находятся в сети.

Или вы также можете попробовать следующие шаги (не требует установки nmap):

  • Введите «ipconfig» в командной строке. Это даст вам IP-адрес
    ваша собственная машина. Например, IP-адрес вашей машины 192.168.1.6
    Итак, ваш широковещательный IP-адрес — 192.168.1.255.
  • Пропинуйте широковещательный IP-адрес «ping 192.168.1.255» (может потребоваться -b
    на Linux)
  • Теперь введите «arp –a». Вы получите список всех IP-адресов на вашем
    сегмент.

Вы можете запустить arp или nmap с соответствующими аргументами в вашем приложении, используя некоторый инструментарий.

В Qt вы можете использовать QProcess для их выполнения, например:

QProcess myProcess;
QString program = "arp";
QStringList arguments;
arguments << "-a";
myProcess.start(program, arguments);
myProcess.waitForFinished();
QByteArray result = myProcess.readAllStandardOutput ();
const QString all(result);
0

Другие решения

Нет.

Конечно, вам придется использовать некоторые «сетевые инструменты», чтобы понять это, как вы ожидаете, что машина, на которой вы будете знать о других машинах в противном случае?

Один из подходов может заключаться в запросе к серверу DHCP, но при этом не отображаются устройства со статическими IP-адресами и т. Д.

Любой надежный метод связан с определенным взаимодействием с соответствующими устройствами.

2

Вы можете использовать libpcap для перехвата сетевых пакетов в случайном режиме в центральном местоположении и извлечения IP-адреса источника. Задача заключается в определении центрального места, где можно разместить этот сниффер.

-1
По вопросам рекламы [email protected]