Lista de todas las direcciones IP (es decir, dispositivos) presentes en una red de área local

Quiero obtener la lista de todas las direcciones IP (es decir, dispositivos) presentes en una red de área local. No quiero usar nmap, otras herramientas de red. ¿Y tampoco quiero hacer ping a cada dirección IP en un rango de subred y encontrar direcciones IP en vivo? ¿Hay alguna manera usando C, C ++?

No hay una manera confiable de determinar todos los hosts en una LAN. Existen muchos medios para adivinar a sus vecinos, cada uno con sus propias ventajas e inconvenientes. Pero nunca estarás seguro de tener todos los hosts. por ejemplo, puede intentar hacer ping a una transmisión, pero alguien no pudo responder al ping. Así que no hay una manera confiable de hacerlo. Hay algunas formas que se basan en comandos en un terminal. Puedes intentar usar nmap. Aunque necesita instalar nmap:

nmap -sP 192.168.1.* 

Esto hace un simple escaneo de ping en toda la subred para ver qué todos los hosts están en línea.

O también puede probar los siguientes pasos (no requiere la instalación de nmap):

  • Escriba “ipconfig” en el símbolo del sistema. Esto le dará la dirección IP de su propia máquina. Por ejemplo, la dirección IP de su máquina es 192.168.1.6 Por lo tanto, su dirección IP de transmisión es 192.168.1.255.
  • Haga ping a su dirección IP de transmisión “ping 192.168.1.255” (puede requerir -b en linux)
  • Ahora escriba “arp –a” Obtendrá la lista de todas las direcciones IP en su segmento.

Puede iniciar el arp o nmap con los argumentos apropiados en su aplicación usando algún kit de herramientas.

En Qt puedes usar QProcess para cumplirlos como:

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

No.

Por supuesto que tendrá que usar algunas “herramientas de red” para resolver esto, ¿cómo espera que la máquina en la que va a saber sobre otras máquinas de lo contrario?

Un enfoque podría ser consultar el servidor DHCP, pero eso no revelará los dispositivos con direcciones IP estáticas, etc.

Cualquier método confiable implicará la comunicación con los dispositivos en cuestión de alguna manera.

Puede usar libpcap para detectar paquetes de red en modo promiscuo en una ubicación central y extraer la IP de origen. El reto es identificar una ubicación central donde colocar este rastreador.