2011-03-18 15 views
5

¿Cómo puedo detectar si una máquina está conectada/disponible en la red actual?¿Detectado si una máquina está conectada/Disponible?

Tiene varios usos, por supuesto, pero mi principal preocupación aquí es que mi aplicación utiliza recursos ubicados en máquinas específicas y, si no están disponibles, ni siquiera intentará la conexión y utilizará los recursos locales.

Respuesta

6

puede intentar hacer un ping a la máquina. mira este artículo Making a PING with Delphi and the WMI.

+4

¡Eres realmente el hombre de WMI aquí en SO! ;) –

+0

Perfecto ... y rápido;). Gracias – Jlouro

+0

Tenga en cuenta que ping puede ser bloqueado por firewalls, por lo que este no es un mecanismo confiable si no tiene el control de toda la red. – jachguate

3

La solicitud de eco ICMP (PING) le dirá si la máquina está activa y accesible en la red. No le indicará si el servicio al que desea conectarse está disponible en la máquina (en funcionamiento).

La mejor opción sería intentar la conexión y recurrir a los recursos locales si la conexión falla.

+0

tiene razón en su extracto, pero el OP pregunta '¿Cómo puedo detectar si una máquina está conectada/disponible en la red actual?' Si el OP desea verificar si un servicio en particular está disponible y ejecutándose en la máquina remota, él debería haber preguntado al respecto. – RRUZ

+0

@RRUZ, eso es cierto. Sin embargo, estaba señalando que si se comunica con la red de todos modos para determinar si la máquina está disponible, es mejor que intente conectarse. Si tiene éxito, se responde a la pregunta de si la máquina está disponible y la conexión se realiza en un solo paso. De lo contrario, la máquina/servicio no está disponible por el motivo que sea y puede recurrir a los recursos locales. –

0

Una estrategia diferente a la de intentar conectarse: dejar que el servidor informe a los clientes si los servicios están todavía disponibles, enviando UDP Broadcast o algún tipo de señal de latido sobre middleware (pipes?), Que los clientes escuchan/suscribir el modelo de comunicación.

2

Simplemente intente utilizar el recurso y si obtiene un error, use el recurso local. La estrategia que está intentando implementar adolece de varios problemas, incluida la sincronización de ventanas entre la prueba y el uso, durante los cuales el recurso puede no estar disponible, y tampoco prueba el recurso para ver la disponibilidad, solo algo de orden inferior como un puerto TCP o el eco ICMP parte de la pila. En general, la mejor forma de detectar si un recurso está disponible es simplemente tratar de usarlo y recuperarse de los fallos. Tienes que escribir código para manejar esos fallos de todos modos, ¿por qué hacerlo todo dos veces?

Cuestiones relacionadas