• Publicidad

Proyecto en formato ventana

¿Estás desarrollando un proyecto, o piensas hacerlo? Pon aquí tu propuesta, lo más seguro es que alguien esté interesado en ayudarte.

opciones a http::server

Notapor scout » 2011-04-15 01:26 @102

Haciendo uso del recurso Paciencia v3.0, me veo en la necesidad de consultarles nuevamente…

Actualmente tengo la versión de Perl v5.12 y v5.10 en dos ordenadores diferentes… estoy tratando de montar un servidor con HTTP::Server pero me está dando guerra. ¿Alguno conoce alguna opción similar con el que pueda levantar un servidor HTTP?

La idea es no utilizar otro componente que no sea de perl...
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Publicidad

Re: opciones a http::server

Notapor scout » 2011-04-15 02:32 @147

Bueno, bajando de versión a v5.10 y bajando de versión de HTTP::Server a v0.43 me funcionó... lo pongo por sí a alguien le pasa lo mismo... igulamente me gustaría conocer opciones de servidor... si alguno conoce.
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

consulta sobre pagina inicial http::server

Notapor scout » 2011-04-15 04:21 @223

El server levantó bien pero sale un error 404. Necesitaría saber cómo hacer para definirle el HTML que quiero que inicie.

Estoy buscando ejemplos pero no con ellos...

El otro punto que no entiendo es por qué va directo al "else", ¿¿es porque no definí la pagina inicial??

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub handle_request {
  2.     my $self = shift;
  3.     my $cgi  = shift;
  4.  
  5.     my $path    = $cgi->path_info();
  6.     my $handler = $dispatch{$path};
  7.  
  8.     if ( ref($handler) eq "CODE" ) {
  9.         print "HTTP/1.0 200 OK\r\n";
  10.         $handler->($cgi);
  11.  
  12.     }
  13.     else {
  14.         print "HTTP/1.0 404 Not found\r\n";
  15.         print $cgi->header,
  16.             $cgi->start_html('Not found'),
  17.             $cgi->h1('Not foundsss'),
  18.             $cgi->end_html;
  19.     }
  20. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Proyecto en formato ventana

Notapor explorer » 2011-04-15 06:33 @314

Yo supongo que te refieres a HTTP::Server::Simple, no a HTTP::Server.

Pero, ¿eso no es todo el código de tu programa, verdad?

Tienes que indicar las subrutinas que se van a ejecutar según la petición del usuario. Según tu código, en el hash %dispatch.

Al llegar a la línea 8, el código comprueba si es una referencia a un código o no. Si lo es, lo ejecuta, es decir, salta a la subrutina que se ocupa de una determinada petición del usuario. Y si no es un código, sale la página de fallo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Proyecto en formato ventana

Notapor scout » 2011-04-15 08:21 @390

El código es el ejemplo del http::server::simple 0.43, me parece que no me está quedando claro...

Este ejemplo levanta como webserver en localhost:8080, tendría que mostrar al menos un hello... y en mi caso quiero apuntar a un simple prueba.html donde pondré todo el sistema... Pero no me quedó claro lo del if(), qué función cumple en esta historia... o dónde va el path que apunta al html... disculpen si es básica la pregunta, es que me atoré en ese paso...

#!/usr/bin/perl
{
package MyWebServer;

use HTTP::Server::Simple::CGI;
use base qw(HTTP::Server::Simple::CGI);

my %dispatch = (
'/hello' => \&resp_hello,
# ...
);

sub handle_request {
my $self = shift;
my $cgi = shift;

my $path = $cgi->path_info();
my $handler = $dispatch{$path};

if (ref($handler) eq "CODE") {
print "HTTP/1.0 200 OK\r\n";
$handler->($cgi);

} else {
print "HTTP/1.0 404 Not foundsssssss\r\n";
print $cgi->header,
$cgi->start_html('Not foundsssss'),
$cgi->h1('Not foundsss'),
$cgi->end_html;
}
}

sub resp_hello {
my $cgi = shift; # CGI.pm object
return if !ref $cgi;

my $who = $cgi->param('name');

print $cgi->header,
$cgi->start_html("Hello"),
$cgi->h1("Hello $who!"),
$cgi->end_html;
}

}

# start the server on port 8080
my $pid = MyWebServer->new(8080)->background();
print "Use 'kill $pid' to stop server.\n";
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Proyecto en formato ventana

Notapor explorer » 2011-04-15 09:05 @420

Yo no lo he probado, pero mirando el código del ejemplo, se ejecuta la subrutina resp_hello() cuando el usuario hace la petición

http://localhost:8080/hello?name=scout

Eso es lo que indica el hash %dispatch... y dentro de resp_hello() se observa que necesita un parámetro llamado name para usarlo luego en la página web que va a mostrar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Proyecto en formato ventana

Notapor scout » 2011-04-15 13:36 @608

mmm, perfecto, ya me está abriendo puertas el tema... Me gustó... Ahora seguiré... Muchas gracias...
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Cerrar o reiniciar proceso de HTTP::Server::Simple

Notapor scout » 2011-04-16 02:09 @131

¿Alguno conoce la forma de reiniciar o cerrar el proceso HTTP::Server::Simple desde consola de Windows?

Intenté por cmd con taskill <número de id>, pero no lo cierra.

En el ejemplo de CPAN aparece Use 'kill -3944' to stop server.
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

mostrar imagen desde CGI ?

Notapor scout » 2011-04-16 03:23 @182

Utilizando el http::server::simple, estoy queriendo mostrar una imagen la cual está situada en la misma carpeta donde está el script, por ejemplo, fotos.pl. El servidor levanta bien pero muestra el recuadro de la imagen solamente. ¿Alguno sabe por qué no me muestra la imagen? ¿O dónde la tengo que guardar?

print "<html><body bgcolor=#ffffff text=#000000>";
print "Fotos<br>";
print "<center>";
print "<table bgcolor=#000000 cellpadding=2>";
print "<tr><td bgcolor=#9999FF><b>REMOTE_ADDR</b></td>";
print "<td bgcolor=#DDDDFF>";
print $ENV{"REMOTE_ADDR"};
print "</td></tr>";
print "<tr><td bgcolor=#9999FF><b>SERVER_SOFTWARE</b></td>";
print "<td bgcolor=#DDDDFF>";
print $ENV{"SERVER_SOFTWARE"};
print "</td></tr></table>";
print "<tr><td bgcolor=#9999FF><img src='prueba.gif'></td></tr>";
print "</body></html>";
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Proyecto en formato ventana

Notapor explorer » 2011-04-16 09:15 @427

¿Has probado con el gestor de Tareas de Windows?

La frase del 'kill' se refiere, naturalmente, por si estás en un sistema Linux/Unix.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

AnteriorSiguiente

Volver a Proyectos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados