Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Como identificar clientes conectados remotamente (https://www.clubdelphi.com/foros/showthread.php?t=95727)

jars 17-06-2022 14:17:51

Como identificar clientes conectados remotamente
 
Hola amigos.
Tengo un programa desktop en Delphi7 que actúa como servidor, al cual se conectan todos los usuarios del sistema, tanto los que están en la Lan como los que están en remoto. Lo que me piden es que necesitan que en un panel que muestra estadísticas en tiempo real identifique a los clientes que están conectados en forma remota. Alguien tiene una idea de como poder hacerlo?
El programa servidor utiliza TServerSocket.
Gracias de antemano.

mamcx 17-06-2022 16:36:01

Las IP locales tienen un rango definido, al igual que las publicas:

https://en.wikipedia.org/wiki/Reserved_IP_addresses

en base a eso puedes deducir si es local o no. Obvio hay escenarios (como prosas y vpns) que pueden distorsionar esa info. Adicionalmente si tienes control sobre los clientes les puedes hacer que envíe una "cabecera" con sun ip local (similar a como es el encabezado HOST en http) para extra validación.

Pero no olvides que es solo seria real si no hay intentos de "ocultar" la ip de parte de los clientes.

movorack 17-06-2022 18:52:32

Puede que el comando QWINSTA pueda darte parte de la información que necesitas.

https://docs.microsoft.com/en-us/win...mmands/qwinsta
Cita:

Muestra información sobre las sesiones en un servidor host de sesión de escritorio remoto. La lista incluye información no solo sobre sesiones activas sino también sobre otras sesiones que ejecuta el servidor.

Casimiro Notevi 17-06-2022 20:53:35

Si los clientes conectados de forma remota también lo han hecho mediante un login/password, entonces lo tienes fácil.

Neftali [Germán.Estévez] 20-06-2022 09:14:17

¿Has revisado los eventos que tiene el componente TServerSocket?
Hay algunos que posiblemente te sirvan para llevar la cuenta de los clientes conectados (OnAccept, OnClientConnect).

jars 20-06-2022 23:20:52

En caso que el cliente suministre una lista de de ip´s locales, todas la que no estén en esa lista son externas. De que forma puedo leer los octetos sin necesidad de chekear una por una?.

jars 24-06-2022 01:03:52

Por ejemplo, el cliente confecciona una lista así:
10.9.234.0/24= red_a
10.9.96.0/24= red_b
10.11.0.0/16= red_c
Etc...

De que forma puedo hacer la comparación de un puesto que se conecta con una ip 10.9.96.15 para identificar de que región se conecta?

pcicom 07-07-2022 06:46:12

Saludos.

Tal vez te sirva esto..

Código Delphi [-]

function IsRemoteSession:boolean;
const
  sm_RemoteSession = $1000;
begin
  result := GetSystemMetrics(sm_RemoteSession) <> 0;
end;


La franja horaria es GMT +2. Ahora son las 19:07:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi