Using perl Syntax Highlighting
- #!/usr/bin/perl
- use strict;
- use warnings;
- use IO::Socket;
- use Hola::hola;
- our $PORT = 3121;
- our $PROTO = 'tcp';
- our $CLIENTS = 128;
- my $TIME_OUT = 5;
- my $server = IO::Socket::INET->new( Proto => $PROTO,
- LocalPort => $PORT,
- Listen => $CLIENTS,
- Reuse => 1);
- if (not defined $server){ # Si es que no se puede levantar el socket.
- print "No se puede levantar el servidor. Compruebe si el puerto $PORT no está utilizado por otro proceso.";
- exit(1);
- }
- my $socket_client;
- while ($socket_client = $server->accept())
- {
- my $client = new Hola::hola($socket_client);#Un modulo..
- my $ip_client=$client->ip();
- $client->enviar($client->select);
- }
- close($server);
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Paquete Hola
Using perl Syntax Highlighting
- #!/usr/bin/perl
- package Hola::hola;
- use strict;
- use IO::Select;
- my $TIME_OUT = 5; # 5 Segundos de Timeout
- my $message= "Estoy en el server\n";
- sub new {
- my ($class, $socket) = @_;
- $socket->autoflush(1);#Para que es el autoflush???
- die "Socket no instanciado!!" if not defined $socket;
- my $client_ip = unpack("C C",$socket->peeraddr); # Obtiene la IP del cliente.
- my $self = {
- _IP => $client_ip,
- _socket => $socket,
- _select => undef,
- _dbConnection => undef,
- _countTriesAuth => 1,
- _cli_id => undef,
- _cli_handle => undef
- };
- bless $self, $class;
- $self->select(IO::Select->new($socket));#Esta parte del codigo nose para que funciona... esto lo obtuve de alguna pagina web, para crear una instancia del cliente
- return $self;
- }
- sub ip {
- my ($self, $_ip) = @_;
- $self->{_IP} = $_ip if defined $_ip;
- return $self->{_IP};
- }
- sub dns {
- my ($self, $_dns) = @_;
- $self->{_DNS} = $_dns if defined $_dns;
- return $self->{_DNS};
- }
- sub select {
- my ($self, $_select) = @_;
- $self->{_select} = $_select if defined $_select;
- return $self->{_select};
- }
- sub enviar {
- my ($message, $select) = @_;
- my @fh = $select->can_write($TIME_OUT);
- if (@fh) {
- $fh[0]->send(pack ('N', length($message) + 4));
- $fh[0]->send($message);
- }
- }
- 1;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
y por último, el cliente propiamente tal...
Using perl Syntax Highlighting
- #!/usr/bin/perl
- use strict;
- use warnings;
- use IO::Socket;
- my $sock = new IO::Socket::INET (
- PeerAddr => 'localhost',
- PeerPort => '3121',
- Proto => 'tcp',
- );
- die "Could not create socket: $!\n" unless $sock;
- my $message_length=0;
- my $message_data='';
- $sock->read($message_length,4);
- $sock->read($message_data, unpack ('N', $message_length)-4);
- print "$message_data";
- close($sock);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Lo ejecuto por la consola y aparece lo siguiente:
Hola::hola=HASH(0x84708c8)
Ya no sé qué es lo que estoy haciendo mal :s.... cualquier ayuda con respecto al caso se agradece mucho.