home *** CD-ROM | disk | FTP | other *** search
/ Acorn User 10 / AU_CD10.iso / Updates / Perl / Non-RPC / !Perl / scripts / server < prev    next >
Text File  |  1997-09-25  |  1KB  |  37 lines

  1.     #!/usr/bin/perl -w
  2.     require 5.002;
  3.     use strict;
  4. #    BEGIN { $ENV{PATH} = '/usr/ucb:/bin' }
  5.     use Socket;
  6.     use Carp;
  7.  
  8.     sub logmsg { print "$0 $$: @_ at ", scalar localtime, "\n" }
  9.  
  10.     my $port = shift || 2345;
  11.     my $proto = getprotobyname('tcp');
  12.     $port = $1 if $port =~ /(\d+)/; # untaint port number
  13.  
  14.     socket(Server, PF_INET, SOCK_STREAM, $proto)    || die "socket: $!";
  15.     setsockopt(Server, SOL_SOCKET, SO_REUSEADDR,
  16.                     pack("l", 1))     || die "setsockopt: $!";
  17.     bind(Server, sockaddr_in($port, INADDR_ANY))    || die "bind: $!";
  18.     listen(Server,SOMAXCONN)                 || die "listen: $!";
  19.  
  20.     logmsg "server started on port $port";
  21.  
  22.     my $paddr;
  23.  
  24.     $SIG{CHLD} = \&REAPER;
  25.  
  26.     for ( ; $paddr = accept(Client,Server); close Client) {
  27.     my($port,$iaddr) = sockaddr_in($paddr);
  28.     my $name = gethostbyaddr($iaddr,AF_INET);
  29.  
  30.     logmsg "connection from $name [",
  31.         inet_ntoa($iaddr), "]
  32.         at port $port";
  33.  
  34.     print Client "Hello there, $name, it's now ",
  35.             scalar localtime, "\n";
  36.     }
  37.