Podemos escanear toda la red, o un rango de IPs, haciendo ping en varios hilos (de esto hay información en el foro), o bien, como mostré en
este ejemplo, usar un servidor UDP en un hilo de nuestro programa servidor, que responda a un mensaje por ese protocolo a cada cliente que lo envíe. Los clientes envían un solo mensaje a la dirección broadcast de la red, de forma que todos los servidores lo recibirán. Dado que UDP no depende de conexión y que puede fallar, se puede repetir el mensaje un número determinado de veces. El mensaje de cada servidor, será recibido por el cliente que lo envía. Para ello, debe estar a la escucha en dicho protocolo UDP en un hilo a parte, que tomará nota de cada IP que responda. De esta forma, el cliente sabe los servidores que están en ese momento a la escucha. El sistema es parecido al que usan los dispositivos que quieren conectarse a un router para establecer la conexión después de esta verificación.
Para encontrar la dirección del broadcast de una red, se puede usar
este método.
Para hacer ping sin usar componentes de terceros, propongo
este código.
Saludos.