#!/usr/bin/perl # simple server $PORT=17100; # listen for requests on this port (http://host:12345/index.html) $AF_INET=2; $TCP=(getprotobyname('tcp'))[2]; $SOCK_ADDR=pack('S n a4 x8', $AF_INET, $PORT, "\0\0\0\0"); $SOCK_STREAM = 1 if socket(S, $AF_INET, 1, $TCP); $SOCK_STREAM = 2 if socket(S, $AF_INET, 2, $TCP); # Solaris close S; if ($PORT =~ /\D/) { # port name instead of a number? $PORT=(getservbyport($PORT, 'tcp'))[2]; } socket(S, $AF_INET, $SOCK_STREAM, $TCP) || die "$SERV_NAME socket: $!\n"; bind(S,$SOCK_ADDR) || die "$SERV_NAME bind: $!\n"; listen(S,5) || die "$SERV_NAME listen: $!\n"; local($WAS)=select(S); $| = 1; select(NS); $| = 1; select($WAS); print "\n--- Simple Server 1.0\n--- Listening for requests on port $PORT\n"; while (1) { ++$conn; ($addr = accept(NS,S)) || die "$SERV_NAME accept: $!\n"; ($af,$port,$ipaddr) = unpack('S n a4 x8',$addr); $ipaddr = join('.', unpack("C4",$ipaddr)); print "--- Connect: #$conn $ipaddr:$port ", scalar(localtime), "\n"; while () { print $_; } print "--- Disconnect: #$conn $ipaddr:$port ", scalar(localtime), "\n"; close(NS); }