Ir al contenido



Foto

Saber ubicación de thin client (cliente ligero)


10 respuestas en este tema

#1 Pratasvenska

Pratasvenska

    Member

  • Miembros
  • PipPip
  • 38 mensajes
  • LocationSuecia

Escrito 10 septiembre 2012 - 04:34

Buen día,

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.
  • 0

#2 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.893 mensajes
  • LocationMadrid - España

Escrito 10 septiembre 2012 - 07:56

Si tienes el código fuente del cliente y el servidor, puedes incluir en el protocolo que se envíe un campo identificador del cliente.

Otra opción es usar una función como esta: IPToHost y tener una lista de direcciones.


Saludos.


  • 0

#3 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 10 septiembre 2012 - 08:12

Hola.

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.
  • 0

#4 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.893 mensajes
  • LocationMadrid - España

Escrito 10 septiembre 2012 - 12:10

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.


  • 0

#5 Pratasvenska

Pratasvenska

    Member

  • Miembros
  • PipPip
  • 38 mensajes
  • LocationSuecia

Escrito 11 septiembre 2012 - 04:06


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
 

Archivos adjuntos


  • 0

#6 seoane

seoane

    Advanced Member

  • Administrador
  • 1.249 mensajes
  • LocationEspaña

Escrito 11 septiembre 2012 - 06:07

La MAC adress de mi computadora es la segunda (A4-BA....), cierto?

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.

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


  • 0

#7 Pratasvenska

Pratasvenska

    Member

  • Miembros
  • PipPip
  • 38 mensajes
  • LocationSuecia

Escrito 11 septiembre 2012 - 08:56


La MAC adress de mi computadora es la segunda (A4-BA....), cierto?

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.

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!
  • 0

#8 seoane

seoane

    Advanced Member

  • Administrador
  • 1.249 mensajes
  • LocationEspaña

Escrito 11 septiembre 2012 - 11:15

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.


delphi
  1. ShowMessage(GetEnvironmentVariable('CLIENTNAME'));

El nombre de usuario:


delphi
  1. 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
  • 0

#9 Pratasvenska

Pratasvenska

    Member

  • Miembros
  • PipPip
  • 38 mensajes
  • LocationSuecia

Escrito 13 septiembre 2012 - 02:05

Ok, Gracias por la información. Haré pruebas en cuanto tenga acceso a los clientes ligeros. Ahora mismo hago todo desde mi computadora.

Saludos
  • 0

#10 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 741 mensajes
  • LocationPinar del Río, Cuba

Escrito 07 septiembre 2015 - 06:36

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?


  • 0

#11 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.893 mensajes
  • LocationMadrid - España

Escrito 07 septiembre 2015 - 09:51

Ya lo tienes reparado: ¿Cómo sacar la dirección fí­sica de un equipo a través del IP con Delphi?

 

Saludos


  • 0



Responder en este tema