30 lines
938 B
Perl
30 lines
938 B
Perl
use IO::Socket;
|
|
my $use_fork = 1;
|
|
|
|
my $sock = new IO::Socket::INET (
|
|
LocalHost => '127.0.0.1',
|
|
LocalPort => '12321',
|
|
Proto => 'tcp',
|
|
Listen => 1, # maximum queued connections
|
|
Reuse => 1,
|
|
)
|
|
or die "socket: $!"; # no newline, so perl appends stuff
|
|
|
|
$SIG{CHLD} = 'IGNORE' if $use_fork; # let perl deal with zombies
|
|
|
|
print "listening...\n";
|
|
while (1) {
|
|
# declare $con 'my' so it's closed by parent every loop
|
|
my $con = $sock->accept()
|
|
or die "accept: $!";
|
|
fork and next if $use_fork; # following are for child only
|
|
|
|
print "incoming..\n";
|
|
print $con $_ while(<$con>); # read each line and write back
|
|
print "done\n";
|
|
|
|
last if $use_fork; # if not forking, loop
|
|
}
|
|
|
|
# child will reach here and close its copy of $sock before exit
|