2010-01-03 21 views
9

Estoy escribiendo un programa donde se conecta, por varias razones, a otras computadoras en una LAN. Sin embargo, en lugar de tener que ingresar la dirección IP de varias computadoras (un dolor en el trasero), me preguntaba si hay una forma de listar las direcciones IP de todas las computadoras en una LAN. He investigado todo el día, y hasta el momento no he encontrado nada adecuado. ¿Es esto porque no existe nada de este tipo? Gracias de antemano.Lista de la dirección IP de todas las computadoras conectadas a una sola LAN

EDITAR: Parecería que con las muchas vistas que está recibiendo esta publicación, debería publicar mi solución real. En general, las convenciones de nomenclatura para direcciones IP de computadoras en una LAN son las mismas. ejemplo siendo 192.168.2. *, * siendo reemplazado con cualquier número válido. Mi programa detecta la dirección IP, la muestra al usuario y luego solicita los primeros 3 bloques de IP. A continuación, escanea secuencialmente hasta 200 en la convención de nomenclatura de IP dada haciendo un ping y esperando una respuesta. Sin respuesta, sin computadora. Puede hacer todo lo que puede hacer con un IP una vez que sabe que tiene una computadora detrás.

+0

Puede obtener la subred y recorrer las direcciones disponibles para hacer ping. Pero eso no ayudaría a los que simplemente están apagados. Si tuviera acceso, podría ver los archivos de arrendamiento de DHCP –

+1

'ARPing', como describió Jason, es la única solución multiplataforma y de protección de firewall. El enfoque WNetEnumResource() de BlueRaja es razonable si está limitado a Windows boxen. Los enfoques de escaneo/nmap tienen demasiados dragones con firewalls basados ​​en host. No hay una llamada mágica/API. Es probable que SendARP() de la API de iphelper sea su mejor opción: http://msdn.microsoft.com/en-us/library/aa366358%28VS.85%29.aspx –

+0

¿Por qué no 254? (255 en subredes más grandes) – Deanna

Respuesta

6

En realidad no encontrará nada más confiable que ping ing o arping direcciones de ing en el mismo subconjunto. Implementé esto para cierto software en el día de mi primer internado y, la última vez que lo revisé (para ser justos fue hace varios años), eso es lo que todavía estaban usando para esta funcionalidad. Supongo que eso significa que no han encontrado nada mejor.

No es difícil encontrar el código fuente para estos y traducirlos a C#. ping, arping. De forma alternativa, solo realiza un envío a un símbolo del sistema y ejecuta ping y luego analiza los resultados.

+0

En realidad, 'System.Net.NetworkInformation.Ping' debería hacer el truco. No es necesario traducir nada de C. – GeReV

7

1) Leer la máscara de subred y calcular todas las direcciones IP de la máscara de subred que se encuentre. A continuación, se puede ya sea usuario de ping ICMP (ping estándar) o de ping ARP para enumerar todas las direcciones IP válidas. ARP Ping es muy confiable en una configuración de subred.

2) Puede nmap para listar todos los anfitriones

nmap -nsP 192.168.10.1/254 | grep ^Host 
0

¿Puedes mirar la máscara de subred IP y en el adaptador de red y de ping todas las direcciones? Cualquiera que responda puede ser consultado para ver si tiene lo que necesita para conectarse.

2

Cualquier herramienta de descubrimiento de host puede ayudarlo aquí. En particular, Nmap sin duda le dará esta información, aunque podría ser excesivo en esta situación. Google para "escaneo ping" y debería obtener algunos resultados útiles.

+3

(+1) usa nmap a través de una llamada de proceso y analiza los resultados. –

2

Consulte WNetOpenEnum() y WNetEnumResource(), here.

Cuestiones relacionadas