#!/usr/bin/perl -w require 5.002; use strict; BEGIN { $ENV{PATH} = '/usr/ucb:/bin' } use Socket; use Carp; use IO::File; use IO::Handle; sub logmsg { print "$0 $$: @_ at ", scalar localtime, "\n" } my $port = 8068; my $proto = getprotobyname('tcp'); my $naptime = 1; my $LOGFILE; my $curpos; open ($LOGFILE, 'c:\logfile\log') or die "Can't open logfile: $!"; socket(Server, PF_INET, SOCK_DGRAM, $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"; my $paddr; $SIG{CHLD} = \&REAPER; for ( ; $paddr = accept(Client,Server); close Client) { my($port,$iaddr) = sockaddr_in($paddr); my $name = gethostbyaddr($iaddr,AF_INET); logmsg "connection from $name [", inet_ntoa($iaddr), "] at port $port"; for (;;) { my $msg= ''; for ($curpos = tell($LOGFILE); <$LOGFILE>; $curpos = tell($LOGFILE)) { readline $LOGFILE; $msg = $_; print Client $msg; } sleep $naptime; seek($LOGFILE, $curpos, 0); } }