Saber ubicación de thin client (cliente ligero)
#1
Posted 10 September 2012 - 04:34 AM
Me gustaría saber si hay alguna manera identificar un cliente ligero. Por ejemplo: Digamos que tengo una aplicacion simple de reloj checador y una red con n clientes pero cada uno en una oficina diferente. Los usuarios dan clic a "IN" en el reloj y se registra la hora de entrada. Pero, es posible saber de que oficina vino esa "checada"?? Siendo que las IP son dinámicas.
Ojalá alguien tenga una respuesta.
Gracias y saludos.
#3
Posted 10 September 2012 - 08:12 AM
En lugar de la IP puedes utilizar la MAC Address para identificar los puntos de trabajo (esta va a ser distinta en cada equipo).
Aquí tienes varios algoritmos para calcular la MAC Address.
http://www.scalabium...faq/dct0088.htm
http://www.swissdelp...code.php?id=651
http://www.delphifaq...work/f702.shtml
Saludos.
#4
Posted 10 September 2012 - 12:10 PM
Y siguiendo con la idea de la MAC sin irnos lejos: ¿Cómo sacar la dirección física de un equipo a través del IP con Delphi?
Saludos.
#5
Posted 11 September 2012 - 04:06 AM
Y siguiendo con la idea de la MAC sin irnos lejos: ¿Cómo sacar la dirección física de un equipo a través del IP con Delphi?
Saludos.
Gracias a todos por sus respuestas. El ejemplo con el codigo de Seoane sirve muy bien, aunque necesito asegurarme estar recibiendo la MAC address correcta. Cuando hago un ipconfig /all obtengo lo que muestra el archivo adjunto (disculpen que esté en Sueco pero creo que se entiende):
La MAC adress de mi computadora es la segunda (A4-BA....), cierto?
Y una pregunta de continuación: Ahora que ya se la MAC address de mi cliente ligero (CL). Cual sería la mejor manera de aplicarlo a mi proyecto delphi? A mi se me ocurre lo mas básico, que seria de antemano saber las MAC de todos los CL y guardarlas en un array y que cuando inicie mi programa simplemente comparar la del CL en el que se esta trabajando con el arreglo para saber donde estoy.
Pero tal vez esto no es lo mas "bonito"?? Espero consejos.
Otra vez gracias y saludos
Attached Files
#6
Posted 11 September 2012 - 06:07 AM
La dirección MAC identifica a la tarjeta de red, no al equipo, por lo tanto tendrás una MAC por cada tarjeta de red que tengas instalada en tu ordenador.La MAC adress de mi computadora es la segunda (A4-BA....), cierto?
Por otro lado creo que no estamos enfocando el problema correctamente. Lo que tu estas pidiendo, según creo entender, es una manera de identificar un equipo, de forma única, pero desde un programa que se ejecuta en el propio equipo, de forma local, no desde otro ordenador. Entonces puede que la MAC no sea la mejor opción, o al menos hay muchas otras que tendrías que valorar, una de ellas tan sencilla como guardar en un .ini, o en el registro, un identificador, y a la hora de enviar el fichaje enviar también ese identificador.
Aunque lo que todavía sigue sin quedarme claro es como tienes montado todo.
Se me ocurren varios escenarios (dime si acierto con alguno):
1. Tienes varios ordenadores esparcidos en diferentes localizaciones, cada uno con su sistema operativo y corriendo un programa en local, que se conectan a través de una red (interna o internet) con un servidor que recibe los datos (incluido el identificador de quien los manda) y los guarda.
2. Tienes varios ordenadores esparcidos en diferentes localizaciones, cada uno con su sistema operativo y corriendo un programa en local, que se conectan a través de una red (interna o internet) con un servidor que recibe un peticion de fichaje, entonces intenta determinar de quien viene la petición usando su ip, mac, etc ... y guarda los datos.
3. Tienes un servidor al que se conectan diferentes equipos utilizando el escritorio remoto y ejecutan un programa almacenado en el servidor que se encarga de hacer el fichaje y guardar los datos
¿Acerté con alguno de los 3? Si me equivoque explícanos tu caso.
Saludos
#7
Posted 11 September 2012 - 08:56 AM
La dirección MAC identifica a la tarjeta de red, no al equipo, por lo tanto tendrás una MAC por cada tarjeta de red que tengas instalada en tu ordenador.
La MAC adress de mi computadora es la segunda (A4-BA....), cierto?
Por otro lado creo que no estamos enfocando el problema correctamente. Lo que tu estas pidiendo, según creo entender, es una manera de identificar un equipo, de forma única, pero desde un programa que se ejecuta en el propio equipo, de forma local, no desde otro ordenador. Entonces puede que la MAC no sea la mejor opción, o al menos hay muchas otras que tendrías que valorar, una de ellas tan sencilla como guardar en un .ini, o en el registro, un identificador, y a la hora de enviar el fichaje enviar también ese identificador.
Aunque lo que todavía sigue sin quedarme claro es como tienes montado todo.
Se me ocurren varios escenarios (dime si acierto con alguno):
1. Tienes varios ordenadores esparcidos en diferentes localizaciones, cada uno con su sistema operativo y corriendo un programa en local, que se conectan a través de una red (interna o internet) con un servidor que recibe los datos (incluido el identificador de quien los manda) y los guarda.
2. Tienes varios ordenadores esparcidos en diferentes localizaciones, cada uno con su sistema operativo y corriendo un programa en local, que se conectan a través de una red (interna o internet) con un servidor que recibe un peticion de fichaje, entonces intenta determinar de quien viene la petición usando su ip, mac, etc ... y guarda los datos.
3. Tienes un servidor al que se conectan diferentes equipos utilizando el escritorio remoto y ejecutan un programa almacenado en el servidor que se encarga de hacer el fichaje y guardar los datos
¿Acerté con alguno de los 3? Si me equivoque explícanos tu caso.
Saludos
Claro, una MAC address por cada tarjeta de red. En este caso envié el mensaje antes de informarme de lo que era exactamente el Juniper virtual adapter que tengo instalado aqui en el trabajo.
Podemos ignorar por completo la primera parte de mi mensaje anterior y enfocarnos en tu pregunta, Seoane, espero ser mas claro esta vez:
Has acertado con el escenario número 3. Con la única particularidad de que los equipos conectados al servidor son clientes ligeros.
Entonces sería posible identificarlos con la MAC address, no? 1 cliente = 1 tarjeta de red. Digamos que conozco de antemano todas las MAC de los clientes y las he almacenado en una tabla:
[table]
[tr]
[td]MAC [/td][td]Localizacion[/td]
[/tr]
[tr]
[td]00-00-00-00-00-11 [/td][td]Oficina 1[/td]
[/tr]
[tr]
[td]00-00-00-00-00-22 [/td][td]Oficina 2[/td]
[/tr]
[tr]
[td]00-00-00-00-00-33 [/td][td]Oficina 3[/td]
[/tr]
[/table]
Despues en mi programa delphi (que se ejecuta en el servidor) al iniciar, o presionar algun boton, enviaria su MAC addres y la compararia con la tabla para saber donde está.
Tiene un poco de sentido ya lo que digo? jejeje
Gracias y saludos!
#8
Posted 11 September 2012 - 11:15 AM
Vale pues conociendo ahora el escenario un poco mejor, decirte que por el camino que vamos no conseguiremos nada. Cualquier programa ejecutado en el escritorio remoto verán la misma IP y la misma MAC, las del servidor, por lo que no habría forma de diferenciar uno de otro.
Las alternativas son usar las variables de entorno, por ejemplo:
El nombre del computador cliente.
ShowMessage(GetEnvironmentVariable('CLIENTNAME'));
El nombre de usuario:
ShowMessage(GetEnvironmentVariable('USERNAME'));
De este modo podemos saber de quien se trata por el nombre de usuario, o por el nombre del equipo desde el que se conecta, que creo que es lo que andas buscando.
Saludos
#10
Posted 07 September 2015 - 06:36 AM
Y siguiendo con la idea de la MAC sin irnos lejos: ¿Cómo sacar la dirección física de un equipo a través del IP con Delphi?
Saludos.
Aunque ya hace tiempo de este tema, pero quizas solucione lo que necesito
Trate de acceder al vinculo, pero me dice que no existe
Podrian reparar el enlace?
#11
Posted 07 September 2015 - 09:51 AM
Ya lo tienes reparado: ¿Cómo sacar la dirección física de un equipo a través del IP con Delphi?
Saludos