![]() |
¿Cómo detectar si la conexión es LAN o WAN?
Hola:
he desarrollado un programa usando el Delphi 2009, consta de un módulo servidor y otro cliente, usando tecnología DataSnap, muy buena por cierto. El módulo cliente tiene la habilidad de detectar si el usuario está en la conexión LAN de su trabajo o WAN si está fuera de la oficina para poder conectar a la Base de Datos. Existe una IP Privada para la LAN y otra IP pública para la WAN y la forma que se me ha ocurrido para detectar el tipo de red a la que debe conectarse no es otra que usando lo siguiente: [delphi] procedure TDM.DataModuleCreate(Sender: TObject); var PathLocal, PathServidor: string; NombreExe: PChar; begin NombreExe := 'NombrePrograma'; PathLocal := 'C:\Aplicaciones\'+NombreExe+'.exe'; SQLConnection.Close; SQLConnection.Params.Clear; SQLConnection.Params.Add('Port=nnnn'); SQLConnection.Params.Add('User_Name=sa'); SQLConnection.Params.Add('Password=********'); // Prueba Conexión LAN IpFtp := 'IP.PRIVADA'; SQLConnection.Params.Add('HostName='+IpFtp); PathServidor := '\\'+IpFtp+'\wwwroot\Aplicaciones\'+NombreExe+'.exe'; if FileExists(PathServidor) then begin Conexion := 'Conexión vía LAN'; end else begin // Prueba Conexión WAN IpFtp := 'IP.PUBLICA'; SQLConnection.Params.Delete(SQLConnection.Params.Count-1); SQLConnection.Params.Add('HostName='+IpFtp); PathServidor := '\\'+IpFtp+'\wwwroot\Aplicaciones\'+NombreExe+'.exe'; if FileExists(PathServidor) then begin Conexion := 'Conexión vía WAN'; end else begin ShowMessage('No se ha podido conectar vía LAN ni WAN'); EXIT; end; end; end; [\Delphi] El código anterior, que solo muestra lo principal, funciona. Lo malo que tiene que la instrucción 'FileExists' es muy lenta y en ocaciones cuando se está fuera de la oficina demora cerca de 2 minutos en dar respuesta. Mi pregunta es: ¿Conocen otra técnica, que responda mas rápidamente en reemplazo alo que utilizo actualmente? Mucha gracias |
(Este mensaje es igual al anterior, con la corrección del código)
Hola: he desarrollado un programa usando el Delphi 2009, consta de un módulo servidor y otro cliente, usando tecnología DataSnap, muy buena por cierto. El módulo cliente tiene la habilidad de detectar si el usuario está en la conexión LAN de su trabajo o WAN si está fuera de la oficina para poder conectar a la Base de Datos. Existe una IP Privada para la LAN y otra IP pública para la WAN y la forma que se me ha ocurrido para detectar el tipo de red a la que debe conectarse no es otra que usando lo siguiente:
El código anterior, que solo muestra lo principal, funciona. Lo malo que tiene que la instrucción 'FileExists' es muy lenta y en ocaciones cuando se está fuera de la oficina demora cerca de 2 minutos en dar respuesta. Mi pregunta es: ¿Conocen otra técnica, que responda mas rápidamente en reemplazo alo que utilizo actualmente? Mucha gracias |
|
La franja horaria es GMT +2. Ahora son las 02:24:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi