#!/usr/bin/perl

#RFC 864 server
#TODO: accepts only 1 connection at a time and quits after the connection closes

use strict;

use IO::Socket;

my $port = $ARGV[0] || 19;
my $listening_socket = new IO::Socket::INET(LocalPort => $port, Proto => 'tcp', Listen => 1, Reuse => 1)
	or die "Could not create socket on port $port: $! (run `$0 [port]` for another port)";
print "Listening on port: $port (run `$0 [port]` for another port)\n";

my $string = join "", map { chr $_ } (32 .. 126);
my $string = join "", map { substr($string x 2, $_, 72) . "\n" } (0 .. length($string) - 1);
while (my $socket = $listening_socket->accept()) {
	print "Incoming connection from peer " . $socket->peerhost() . "\n";
	while (1) {
		print $socket $string;
	}
}
close($listening_socket);

