PERL_SER.html



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