FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
||||
|
||||
Servidor web
Bueno, pues voy a poner por aqui otro programita (mas bien un juguete ) que hice para pasar el rato, pero me quedo batante bien. Es un pequeño servidor web, creado usando solo funciones de la API (Winsock). Soporta los comando Get y Head, es multihilo, tiene autentificacion, puede listar el contenido de los directorios, etc ...
No intenta tener una utilidad real, pero puede servir para quienes sientan curiosidad por como funciona un servidor web por dentro. Aunque con algunas modificaciones puede resultar un servidor bastante funcional. Por lo de pronto es pequeño (solo 98 Kb el ejecutable) de ahi su nombre Pico. Para probarlo solo hay que ejecutarlo y en un navegador poner esta direccion: http://127.0.0.1:1978/ Eso deberia mostrar el contenido del directorio raiz. El directorio raiz se puede pasar como primer parametro y la constraseña de acceso como segundo parametro, si se dejan en blanco el directorio raiz sera el raiz del disco y no habra contraseña. Bueno, no se me ocurre mas que decir, pero si veo que interesa el tema podemos hablar mas en pofundidad. |
#2
|
||||
|
||||
Hola, muchas gracias, le estube "pegando una hojeada" y me parece muy bueno.
Al querer compilarlo me tiro un error en la linea 374:
Me dice que el identificador SD_SEND no esta identificado. Tengo Delphi 5. Bytes!! |
#3
|
||||
|
||||
Puede que en esa version de delphi no este definida esa constante, pero eso tiene facil arreglo
SD_SEND = 1; |
#4
|
||||
|
||||
Hola,
Tiene una pinta estupenda para estrujarse un poco el cerebro. Muchas gracias Seoane. |
#5
|
|||
|
|||
Muy muy currado, me suena a mis dias de universidad con las prácticas de CASO.
Te comento que con el Indy 9 o 10, se puede hacer rapidamente un Servidor Web en pocas lineas de código, o relativamente pocas. Esta claro que lo que has hecho tu es mucho mas pedagógico, pero que ahí tienes los código fuente del Indy por si lo quieres mirar. Ademas ahora supongo que lo querras ampliar para que soporte mas cosas. En concreto desarrolle un Servidor Web en Indy para la empresa, que daba soporte para WebServices/SOAP, ISAPI i CGI, ademas de servicio de acceso a una Base de Datos aprovechando el tema de SOAP i el DataSnap de Borland. Las classes principales eran: TIdHTTPWebBrokerBridge: esta clase viene con el Indy pero no esta en la paleta. Hereda de un TCustomHTTPServer, es decir un Servidor HTTP comun como el que implementas, y lo modifica para ponerle todo el tema Web bien estructurado. A partir de este le puedes añadir modulos Web del mismo Delphi TWebModule, aprovechando todo el potencial del WebSnap, como por ejemplo el tema de WebServices/SOAP. Después yo encontre por ahi dos classes que funcionan con el TWebModule. TCGIRunner: Para ejecutar un CGI dentro de un WebModule (da algun problema que otro) TISAPIRunner: Para ejecutar una libreria dinamica DLL siguiendo el protocolo de Microsoft. Este funciona mejor que el anterior. Con todo esto consigues un Web Server bastante completito y totalmente propio, con el permiso de Indy Project y demas, claro esta. No os puedo poner el código porque es propiedad de la empresa, pero creo que con lo que he dado y el Google se puede hacer sin problemas. De hecho la idea la saque de una página de Borland y algun foro. saludos y enhorabuena por tu Web Server. |
#6
|
||||
|
||||
PatrickM gracias por tus comentarios. Ya conozco los componentes Indy, los he utilizado en algun proyecto, de echo el componenete idHTTPServer lo utilizaba para generar graficas que luego mostraba en una pagina web. Es indudable que para un proyecto grande y serio son necesarios componetes grandes y serios como Indy.
Pero como ya dije este es un juguetito. En mis ratos libres me gusta experimentar, la idea de este servidor surgio cuando intentaba hacer un troyano (solo por experimentar ), los primeros intentos usando componentes generaban ejecutables inmensos y lo que necesitaba era algo mas simple, asi que me fui a la API, lo cree todo haciendo uso solo de funciones de la API y me quedaron unos troyanitos bastante resultones. Lo malo de las aplicaciones Cliente-Servidor es que tienes que hacer el cliente y el servidor , asi que para ahorrarme trabajo pense en utilizar un navegador como cliente y que mi servidor actuara como un servidor http. Los troyanos cada vez me quedaban mejor, con capturas de pantalla y demas, llevando los ejecutables al minimo eliminando incluso la unit classes y creando los threads a mano. Pero al final ya no resultaba tan divertido y abandone el proyecto, pero me parecio interesande (didactico si prefieres) colocar la parte del servidor web (solo lo basico) en una aplicacion de consola, y mostrar por pantalla las peticiones http. Saludos |
#7
|
|||
|
|||
.
Ah claro, ahora entiendo porque estaba todo hecho en el DPR a saco sin ninguna Unit!! Ya me parecia raro.
|
#8
|
||||
|
||||
Hola,
Otra vez yo. Pues nada. Que digo que qué estupendo programa, ¿eh? Qué estupenda práctica... qué curioso... cuántas ideas le surgen a uno tras ver que funciona... tras ver sus potenciales aplicaciones... ¡ay! ¡quién estuviera a tu altura Seoane! PD. Esto lo digo luego de haber revisado un poco más detenidamente a Pico. Cierto que me pierdo no poco (porque de Winsock como que no sé mucho, para qué nos vamos a engañar) pero aún así ha sido un placer. |
#9
|
||||
|
||||
Caramba dec, me vas a hacer sonrojar
Aprovecho para preguntar una cosa. Me he fijado que hay, a día de hoy, mas descargas del archivo zip (Pico.zip) que visitas a este tema. ¿Como puede ser? ¿lo han enlazado de forma directa? ¿se puede hacer eso?, si esa es la explicación, me gustaría saber quien lo enlazo y por que, solo por curiosidad. |
#10
|
|||
|
|||
TIdHTTPWebBrokerBridge
Cita:
Hola que tal, de ante mano aclaro que soy nuevo en el tema, tengo una pregunta: Me he creado varios ISAPI's desde builder6 Tambien tengo un servidor http usando la clase TIdHTTPWebBrokerBridge siempre en builder6 mi duda es, claro si es que se puede ¿como hacer que mi servidor cargue los ISAPI's (dll's) para que proporcione los servicios que contienen las dll's? ya que cada ISAPI tiene su propio WebModule y la clase TIdHTTPWebBrokerBridge solo permite cargar uno a la vez |
#11
|
|||
|
|||
Cita:
Yo uso una clase que encontre llamada TISAPIRunner. Tienes que filtrar tu URL para detectar solo aquellas llamadas que hagan referencia a DLL. Despues haces la llamada al ISAPIRunner de esta manera desde el WebModule de tu Servidor Web:
Tube que modificar la clase TidHTTPappRequest y TidHTTPResponse, para hacer publicos las variables privadas FThread, FRequestInfo y FResponseInfo. PathCGI son los parametros de la URL. Última edición por PatrickM fecha: 07-11-2007 a las 11:53:51. |
#12
|
|||
|
|||
idhttpWebBrokerBridge
Gracias por tu sugerencia PatrickM, ya habia visto esa clase:idISAPIRunner
pero estoy tratrando de cargar los servicios que tengo en las dll's, sin tener que usar esa clase. De todos modos voy a checarlo nuevamente para ver si obtengo alguna idea de como resolver mi problema. |
#13
|
|||
|
|||
Estoy Loco? Convocacion al Conocimiento
Apreciados Foristas,
He leido con atencion sun comentarios sobre el tema del servidor web. Pero mis conocimientos son tan basicos que solo caen en la categoria de sin conocimientos. Creo que muchas personas que trabajamos en Delphi quedamos preocupados por la tendencia del mercado a que muchas aplicaciones requieren que su cliente sea un browser y vemos que no tenemos la habilidad de efectuarlos con delphi, no se si sea desidia o impotencia por la falta de conocimiento, por eso invito a todos a los companeros foristas que habran un espacio de su tiempo, y obsequien a este club los conocimientos para desarrollar aplicaciones web. La idea es crear una pequena aplicacion hecha en delphi que permiter efectuar mantenimiento, consultas, envio archivos desde una aplicacion web. Una plan de un desconocedor del tema seria 1. Menu Aplicacion 2. Login solicitud de usuario contraseña , validacion usuario contra el sistema 3. Manejo de Persistencia del usuario conectado y la formas que esta usando 4. Ejecutar programa de Mantenimiento que conste al menos de 3 formas integradas, por ejemplo: 4.1 Solicitud de Codigo a Mantener o ejecutar busque del codigo a mantener 4.2 Forma de Busque del Codigo a Mantener y retornar el codigo buscado 4.3 Ingreso de DAtos del codigo a Mantener y su validacion sin reeingrear los datos (?ajax en la version 3 del modelo) 5. Generacion de Reporte 6. Envio de datos 7. Un web services Cada una los puntos de llegar a ser validos deben ser documentados de ser posible con pantalla capturadas y explicacion del codigo El desarrollo del codigo debe ser para DUMMIS no empezar con el codigo de delphi net, arrancaquemos con cassini para apreander Espero que mis colegas no consideren esto una irrespeto por aprovecharme de su tiempo lo que realmente pretendo es que los delphianos contemos con una herramienta que nos permita desarrollar software que pueda competir con las aplicaciones hechas en PHP,,,etc . y tener manuales que nos ayuden a tener a delphi como una herramienta competitiva porque encontgramos ejemplos reales y practicos para desarollar aplicaciones y no un ejemplo que no se aplicacable como hola mundo, donde en la vida practica no nos sirve Última edición por ASAPLTDA fecha: 13-04-2007 a las 17:38:41. |
#14
|
||||
|
||||
Cita:
Por otro lado, cada cosa para lo que es. Por mucho que nos empeñemos, con Delphi no se puede hacer lo mismo que con PHP... y vicecontra. Son dos herramientas diferentes con objetivos distintos y capacidades diferenciadas. Y para aprender a diseñar programas de red con Delphi tanto este foro como otros sitios de Internet incluyen numerosísima información útil. Sólo tienes que preguntar. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Servidor FTP | bustio | Varios | 3 | 06-06-2007 12:21:13 |
Servidor Ftp | JCR | Internet | 8 | 08-06-2004 04:24:54 |
servidor ftp | StartKill | Varios | 1 | 21-05-2004 20:50:28 |
Servidor Ftp ? | danytorres | Internet | 6 | 25-07-2003 14:56:20 |
Servidor FB en W98 | FRANKER | Firebird e Interbase | 1 | 05-05-2003 12:22:32 |
|