#!/bin/perl # #This is the first server daemon what I wrote perl5.004_01 sep97 Solaris 2.5 # # use POSIX qw(setsid); use Carp; use IO::Socket; fork && exit; open (TTYP, '>/dev/tty'); ioctl(TTYP,TIOCNOTTY, 0); close (TTYP); open (STDIN, '-'); open (STDOUT, '>/dev/console'); open (STDERR, '>&STDOUT'); setsid; chdir('/'); umask(0); $SIG{CHLD} = sub {wait ()}; $salute = "+OK Hi there ...... I'm Ramon's echo Robot type something ready.. \n"; $sock = new IO::Socket::INET (LocalHost => 'localhost', LocalPort => 2000, Proto => 'tcp', Listen => 5, Reuse => 3 , ); die "Server could not connect: $!" unless $sock; while ($new_sock = $sock->accept ()) { $pid = fork(); die "Can not fork another proccess: $!" unless defined ($pid); if ($pid == 0){ $sockhost = $new_sock->sockhost(); #$name = gethostbyaddr($sockhost); $len = 1024; $offset = 0; $write = syswrite $new_sock , "$salute $sockhost\n", $len , $offset; die "ohhh I could not write :$!\n" unless defined $write; while (defined ($buf = <$new_sock>)) { if ($buf =~ /quit/){ $write = syswrite $new_sock , "Bye..\n", $len , $offset; last; } $write = syswrite $new_sock , "You said: $buf\n", $len , $offset; die "ohhh I could not write:$!\n" unless defined $write; } exit ; } close ($new_sock); }