<html><body><pre>
#!/usr/bin/perl -Tw
# el servidor
($port) = @ARGV;
$port = 2348 unless $port;
use Socket;
$nusuarios=0;
$sockaddr = 'S n a4 x8';
($name, $aliases, $proto) = getprotobyname('tcp');
($name, $aliases, $port) = getservbyname($port, 'tcp')
unless $port =~ /^\d+$/;
$this = pack($sockaddr, &AF_INET, $port, "\0\0\0\0");
select(NS); $| = 1; select(STDOUT);
socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $!";
bind(S, $this) || die "bind: $!";
listen(S, 5) || die "connect: $!";
select(S); $| = 1; select(STDOUT);
for (;;) {
my $pid;
if(!defined($pid=fork)){
die "cannot fork: $!";
}
# elsif($pid){
# print "begin $pid"; # I'm the parent
# }
print "Listening again por el puerto: $port\n";
($addr = accept(NS,S)) || die $!;
print "accept ok\n";
$nusuarios++;
print "numero de usuarios: $nusuarios";
print"\n";
print "La cadena que me mandes(con salto de linea)te la regreso al reves...";
($af,$port,$inetaddr) = unpack($sockaddr,$addr);
@inetaddr = unpack('C4',$inetaddr);
print "$af $port @inetaddr\n";
while ($x=<NS>) {
print"Desde el cliente: $x\n";
print"Hello, aqui el servidor.It's now: ",scalar localtime,"\n";
print "Mensaje escrito por servidor:\n";
chop $x; $x=reverse $x;
print NS "$x\n";
}
}
close(S);
exit;
</pre></body></html>