Listing 3. serverIO.pl

#!/usr/bin/perl -w
# serverIO.pl - a simple server using
# IO::Socket
use strict;
use IO::Socket;
my $sock = new IO::Socket::INET(
                   LocalHost => 'localhost',
                   LocalPort => 7890,
                   Proto     => 'tcp',
                   Listen    => SOMAXCONN,
                   Reuse     => 1);
$sock or die "no socket :$!";
my($new_sock, $c_addr, $buf);
while (($new_sock, $c_addr) = $sock->accept()) {
    my ($client_port, $c_ip) =
                     sockaddr_in($c_addr);
    my $client_ipnum = inet_ntoa($c_ip);
    my $client_host =
             gethostbyaddr($c_ip, AF_INET);
    print "got a connection from: $client_host",
          " [$client_ipnum]\n";
    while (defined ($buf = <$new_sock>)) {
        print $buf;
    }
}