#!/usr/bin/perl use strict; BEGIN { $ENV{PATH} = '/usr/ucb:/bin' } use Socket; use Carp; my ($port, $proto, $paddr, $iaddr, $name); sub logmsg { print "$0 $$: @_ at ", scalar localtime, "\n"; } $port = shift || 4000; socket(Server, PF_INET, SOCK_STREAM, $proto) or die "socket: $!"; setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) or die "setsockopt: $!"; bind(Server, sockaddr_in($port, INADDR_ANY)) or die "bind: $!"; listen(Server, SOMAXCONN) or die "listen: $!"; logmsg "server started on port $port, type ^c to terminate"; for( ; $paddr = accept(Client, Server); close Client) { ($port, $iaddr) = sockaddr_in($paddr); $name = gethostbyaddr($iaddr, AF_INET); logmsg "connection from $name [", inet_ntoa($iaddr), "] at port $port"; print Client "hello there, $name, it's now ", scalar localtime, "\n"; } exit;