LJ Archive

Listing 1. server1.pl

#!/usr/bin/perl -w
# server1.pl - a simple server
use strict;
use Socket;
# use port 7890 as default
my $port = shift || 7890;
my $proto = getprotobyname('tcp');
# create a socket, make it reusable
socket(SERVER, PF_INET, SOCK_STREAM, $proto)
        or die "socket: $!";
setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1)
        or die "setsock: $!";
# grab a port on this machine
my $paddr = sockaddr_in($port, INADDR_ANY);
# bind to a port, then listen
bind(SERVER, $paddr)      or die "bind: $!";
listen(SERVER, SOMAXCONN) or die "listen: $!";
print "SERVER started on port $port\n";
# for each connection...
my $client_addr;
while ($client_addr = accept(CLIENT, SERVER)) {
    # find out who connected
    my ($client_port, $client_ip) =
                     sockaddr_in($client_addr);
    my $client_ipnum = inet_ntoa($client_ip);
    my $client_host =
             gethostbyaddr($client_ip, AF_INET);
    # tell who connected
    print "got a connection from: $client_host",
          " [$client_ipnum]\n";
   # send them a message, close connection
    print CLIENT "Hello from the server: ",
    close CLIENT;
}
LJ Archive