El problema que me encuentro ahora es que el Server no reacciona al accept() fuera de mi máquina Debian y eso es lo que más me mosquea, porque ésta tiene la versión v5.10 de Perl como otra Ubuntu donde hago pruebas y en una funciona y en la otra no, por lo que casi podría descartar el interprete, creo.
El caso es que no entiendo por qué falla. Si te sirve de algo muestro parte del servidor:
Using perl Syntax Highlighting
- package PerlMonitorServer::Server;
- use strict;
- use POSIX;
- use Cwd;
- use Socket;
- use vars qw($AUTOLOAD);
- BEGIN {
- my $curr_path = $0;
- $curr_path =~ s/pws\.pl//;
- eval "use lib '${curr_path}lib';
- use PerlMonitorServer::Logs;
- use PerlMonitorServer::Misc;
- use PerlMonitorServer::MONITOR;
- use PerlMonitorServer::Config;
- ";
- die "Error loading libraries:\n$@" if ($@);
- } # BEGIN
- my $curr_path = PerlMonitorServer::Config::getInstalationDirectory;
- my $debug = 2; # SET DEBUG LEVEL
- my $server;
- local $SIG{CHLD} = sub { wait; } if (defined $Global::UNIX);
- sub new {
- my $pkg = shift;
- my %hash = (_config => undef,
- _methods => {'GET'=>1,'POST'=>1,'HEAD'=>1},
- );
- my $self = \%hash;
- bless $self, $pkg;
- logDebusg(caller(). " creating new Server object=$self.")
- if ($self->debug > 2);
- $self->config;
- return $self;
- } # new
- sub config {
- my $self = shift;
- logDebug(caller() . " config called.")
- if ($self->debug > 2);
- unless (defined $self->{_config}) {
- require PerlMonitorServer::Config;
- $self->{_config} = new PerlMonitorServer::Config();
- } # unless
- return $self->{_config};
- } # config
- sub debug {
- my $self = shift;
- return (@_) ? $debug = shift() : $debug;
- } # debug
- sub server {
- my $self = shift;
- die "Need config to set up server!" unless ($self->config);
- logDebug(caller(). " server called, has config!")
- if ($self->debug > 2);
- unless (defined $server) {
- require PerlMonitorServer::Daemon;
- my $port = PerlMonitorServer::Config::getPort;
- my $ip = PerlMonitorServer::Config::getIP;
- $server = new PerlMonitorServer::Daemon(
- LocalAddr => $ip,
- LocalPort => $port,
- Type => SOCK_STREAM,
- Listen => 5,
- Reuse => 1,
- );
- } # unless
- while (my $new_sock = $server->accept()) {
- # CODIGO QUE SE ENCARGA DE GESTIONAR LA CONEXION....
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4