<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>