Hola a todos, miren estoy buscando escanear los host de la red pero no sé si el sistema trabajará como yo creo, es por eso por lo que creo el hilo.
Se supone que haciendo un ping a la broadcast obtendré la respuesta de todos los hosts de la red conectados al router.
Entonces tendré que mandar un ICMP a la dirección de broadcast ¿pasando mi IP?, y luego el router mandará una peticion a todos los host, pasandole un ICMP con mi dirección IP sino me equivoco un PING vamos, y responderán con su dirección IP a la mi IP que fue la que lanzó la broadcast. ¿funciona así no?
La idea es implementarlo, mandaría un ICMP a la broadcast, y escucharía los paquetes tipo ICMP response entrantes almacenando las ips conectadas a la red, ¿podéis confirmarme que esto funcionara?.
Antes tomé un camino fácil, hacer ping a todo el rango de IPs y la propia funcion me decía si había respondido sin necesidad de escuchar el tráfico, iba de una en una. Mal método escanear host haciendo ping uno a uno para todo el rango de ips.
Si conocéis algún método mejor para hacerlo decidme, luego ya lo implementaría en C++, nada más solo eso.
Saludos.
Edito: He estado informandome y no es buena idea escanear la red usando un ping a la broadcast, pues muchos equipos cancelan los paquetes ICMP, y no responden, usando wireshark, he visto que solo me ha respondido un equipo al ping de broadcast, mientras que 3 lo han ignorado, es por ello que buscaré otros métodos, saludos.
Edito 2: He estado probando como funciona Fing de mi móvil, ya que obtiene los host de la red con su MAC muy rápidamente, y aquí os lo cuento.
Simplemente manda paquetes ARP a todo el rango de hosts y usa threads para mandarlos. Luego la solución más efectiva pasa por mandar mensajes ARP, además de esta manera cuando respondan ya tendré su MAC, y no tendré que hacer 2 llamadas, saludos.