|
|
||||||||||||
|
Realización de un programa de control remoto. Mi intención es crear una somera exposición de como se 'crea' un programa/servicio para realizar control remoto sobre el ordenador donde está instalado a través de un navegador Web Tomaré por sentado que el lector tiene ciertos conocimientos de programación orientada a objetos. Aunque lo expuesto puede aplicarse a diferentes lenguajes, tomaré Delphi como lenguaje de referencia. Como puntos de referencia a estudiar, están: Crear un servidor Web. Gestión de usuarios y sesiones. Tratamiento de hilos (Threads). El formato Http (comandos GET y POST), el formato HTML. JavaScript. WML y WAP. Generación automatica de páginas web y renderización de código HTML. Gestión de escritorios (desktop) en windows (vs login desktop). Acceso a la información grafica de la pantalla. Simulación de eventos ratón, teclado, CTRL-ALT-DEL. Lo primero y más básico, es ver como se crea un servidor Web en un PC Windows. La comunicación TCP/IP a bajo nivel en Windows se realiza a través de la librería Socket.dll. Posiblemente conozcas diferentes componentes que hacen la función de servidor Web. Hay algunos (pocos) que funcionan de forma llamada asíncrona, basada en mensajes del Windows al estilo de como se manejan otros mensajes como el ratón, teclado... En este sistema las peticiones quedan en espera hasta que son ejecutados los mensajes. Otros (los más), utilizan un método llamado sincrono. Que no es otra cosa que crear en cada petición/respuesta, un hilo o proceso (Thread) de programa que corre concurrentemente con el resto de hilos del sistema. De forma que ninguna petición se queda en espera ya que varias peticiones simultaneas, son procesadas a la vez en diferentes hilos. Aunque se puede discutir mucho sobre lo bueno de unos y otros, yo me
centraré en los servidores sincronos ya que se adaptan mejor a
las necesidades del proyecto, además, son un concepto aplicable
a otros sistemas (los servidores Web LINUX son sincronos). Para tener una persistencia de posibles conexiones de diferentes usuarios, el servidor web deberá tener un sistema para manejar las sesiones de usuario. ¿Que es una sesion?. Cuando el usuario conecta con nuestro sistema, este le va a preguntar el nombre de usuario y contraseña. Al menos, nuestro programa tiene que 'recordar' que a ese usuario, ya le pidió una contraseña. Para poder recordarlo, nuestro servidor guardará en una lista la información de cada una de las diferentes conexiones (usuarios), conectados al sistema. Se suelen guardar cosas como el nombre del usuario, el tipo de usuario, su dirección IP, y puede ser útil utilizar una clave 'semilla' para validar las conexiones. Esta información asociada a una conexión, es lo que llamaremos sesión de usuario. A cada petición que se hace al sistema, se busca la sesión de usuario a la que pertenece. Si no la hay, se crea una nueva, y si la hay se toma esta como información adicional a lo 'preguntado' para responder correctamente. Un servidor Web se puede imaginar como una 'caja' a la cual se le hace una pregunta, y este da una respuesta. En realidad es el concepto más básico de programa. Un programa es algo que recibe una entrada de datos o Input (ya sea una acción del teclado, botón del ratón, archivo, dirección Web o cualquier otra cosa que sea capaz de procesar un ordenador), hace un determinado proceso con esta, (cálculos, búsquedas,...) y se obtiene una respuesta Output (impresiones, cambios en la pantalla, información guardada en disco...). Aplicando este concepto a nuestra caja Web, esta entrada y salida tiene forma de comando http. Un comando http no es otra cosa que una cadena de caracteres que tienen que seguir una secuencia y reglas concretas, para que puedan ser reconocibles en diferentes sistemas. Http es uno de los protocolos o dialectos tcp/ip orientado a web. Otros formatos similares serían ftp para realizar transferencias de archivos, smtp para enviar correos electronicos, pop3 para leer e-mail, etc... En el caso de nuestro servidor web, esta caja tiene forma de programa, y se puede entender que está conectada a través del sistema operativo a una línea de entrada y salida de datos. (ya sea una red local, conexión telefonica, targeta wifi...). Esta conexión del ordenador con el exterior, es lo que se llama protocolo de conexión. En el caso de Internet, este protocolo es TCP/IP que es un conjunto de reglas de conexión entre diferentes sistemas heterogéneos, que permite dialogar entre cualquier ordenador conectado a la red. Para poder establecer este dialogo, cada uno de los ordenadores tiene su propia dirección llamada dirección IP que es una secuencia de números que identifican al ordenador. Como nuestro sistema puede tener diferentes conexiones abiertas o diferentes servicios activados, además de la dirección, se añade el concepto de puerto. Un puerto es un número que sirve para ofrecer funciones distintas en la misma dirección IP. 169.254.37.11 puede ser una dirección IP valida (en este caso en una dirección dentro del rango de direcciones locales) Si desde el navegador escribimos http://169.254.37.11 estamos preguntando al ordenador 169.254.37.11, a su puerto 80 ( el que va por defecto asociado a Http), por su 'pagina principal', en realidad, si no se especifica otro comando, el navegador preguntará por la página '/'. Si escribimos http://169.254.37.11:88/index.htm Estamos preguntando al ordenador 169.254.37.11, a su puerto 88, por una página llamada '/index.htm'. Hay dos comandos Http basicos : GET y POST. GET se utiliza principalmente para obtener información. y POST para enviar información al servidor. Aunque veremos que los dos comandos pueden utilizarse tanto para una cosa como la otra. Pero volviendo a nuestra caja Web, esta no tiene porque saber todos los
detalles de la conexión, ni como esta implementada. Solo tiene
que saber que, y quien le pregunta, y devolver una respuesta a esa 'pregunta',
todo ello en un formato HTTP. Esto nos permitirá tener nuestro
motor Web independiente y compatible con diferentes servidores Http. Bajo
este concepto 'independiente', crearemos nuestro servicio web. |
|
||
|
||||
|
||||
|
|
||||
|
Teléfono: 978-610539 - Fax: 978-610861 -Trav.Agustina Aragón 1,1e 44002 Teruel ( España ).webmaster Copyright © 1997-2007 , [Multi-Informatica Teruel, S.L]. |