#! /usr/bin/perl -w
# tcp_s4 [port]
use Socket;
use constant SIMPLE_TCP_PORT => 4001;
my $local_port = shift || SIMPLE_TCP_PORT;
my $trans_serv = getprotobyname( 'tcp' );
my $local_addr = sockaddr_in( $local_port, INADDR_ANY );
socket( TCP_SOCK, PF_INET, SOCK_STREAM, $trans_serv )
or die "tcp_s4: socket creation failed: $!\n";
setsockopt( TCP_SOCK, SOL_SOCKET, SO_REUSEADDR, 1 )
or warn "tcp_s4: could not set socket option: $!\n";
bind( TCP_SOCK, $local_addr )
or die "tcp_s4: bind to address failed: $!\n";
listen( TCP_SOCK, SOMAXCONN )
or die "tcp_s4: listen couldn't: $!\n";
warn "Server starting up on port: $local_port.\n";
my $from_who;
while ( $from_who = accept( CLIENT_SOCK, TCP_SOCK ) )
{
while ( my $chunk = <CLIENT_SOCK> )
{
chomp($chunk);
print "C: ".$chunk."\n";
send( CLIENT_SOCK, $chunk."\n", 0 )
or warn "tcp_s1: problem with send: $!\n";
}
close CLIENT_SOCK
or warn "tcp_s4: close failed: $!\n";
}
close TCP_SOCK;