Исправление
gh0stwizard,
(текущая версия)
:
#!perl
use strict;
use warnings;
use Socket;
use Carp qw(croak);
my $port = shift || 12345;
croak "invalid port" if $port !~ /^\d{1,5}$/;
my $proto = getprotobyname 'tcp';
socket( SERVFD, PF_INET, SOCK_STREAM, $proto )
|| croak "socket: $!";
setsockopt( SERVFD, SOL_SOCKET, SO_REUSEADDR, pack( "l", 1 ) )
|| croak "setsockopt: $!";
bind( SERVFD, sockaddr_in( $port, INADDR_ANY ) )
|| croak "bind: $!";
listen( SERVFD, SOMAXCONN )
|| croak "listen: $!";
while () {
my $paddr = accept( CLIFD, SERVFD );
my ( $port, $ip ) = sockaddr_in $paddr;
printf "connection from %s\n", inet_ntoa( $ip );
close CLIFD;
}
Исходная версия
gh0stwizard,
:
#!perl
use strict;
use warnings;
use Socket;
use Carp qw(croak);
my $port = shift || 12345;
croak "invalid port" if $port !~ /^\d{1,5}$/;
my $proto = getprotobyname 'tcp';
socket SERVFD, PF_INET, SOCK_STREAM, $proto
|| croak "socket: $!";
setsockopt SERVFD, SOL_SOCKET, SO_REUSEADDR, pack( "l", 1 )
|| croak "setsockopt: $!";
bind SERVFD, sockaddr_in( $port, INADDR_ANY )
|| croak "bind: $!";
listen SERVFD, SOMAXCONN
|| croak "listen: $!";
while () {
my $paddr = accept( CLIFD, SERVFD );
my ( $port, $ip ) = sockaddr_in $paddr;
printf "connection from %s\n", inet_ntoa( $ip );
close CLIFD;
}