use Log::Log4perl qw( get_logger :levels );
use Socket;
use POSIX (":sys_wait_h");
use IO::Handle;
####
# Create our socket.
$logger->debug("Making the socket.");
socket( SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp') );
$logger->debug("Socket made.");
# Set socket properties.
$logger->debug("Setting socket options: SO_REUSEADDR.");
setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1 );
$logger->debug("Socket options set.");
# Bind the socket to our port and all ip's.
$logger->debug( "Binding the socket to the specified port $port "
. 'and all available IP addresses on the machine.' );
$my_addr = sockaddr_in( $port, INADDR_ANY );
unless ( bind(SERVER, $my_addr ) ) {
$logger->fatal("Couldn't bind to $port on this machine. $!");
$logger->fatal('Exiting with an exit code of 1.');
exit(1);
}
$logger->debug("Binding to port $port successful.");
# Initialize our listen queue before getting ready for passive open.
$logger->debug('Initialize our listen queue. Setting queue depth to SOMAXCONN');
unless ( listen( SERVER, SOMAXCONN ) ) {
$logger->fatal("Could not initialize listen'er queue for our socket: $!");
$logger->fatal('Will exit out with an exit code of 1.');
exit(1);
}
####
CLIENT->autoflush (1);