#!/usr/bin/perl use strict; use warnings; use IO::Socket; use POSIX qw(:sys_wait_h); my $port = 2345; my $quit = 0; $SIG{INT} = sub { $quit++; }; sub REAPER { while (waitpid(-1, WNOHANG) > 0) { } } $SIG{CHLD} = \&REAPER; my $socket = IO::Socket::INET->new( Listen => 20, LocalPort => $port, Timeout => 60*60, Reuse => 1) || die "Konnte Socket nicht oeffnen: $!\n"; print "Verbindung auf Port $port wird erwartet...\n"; while(!$quit) { next unless my $session = $socket->accept(); print $session->peerhost."\n"; my $child = fork(); die "Forking nicht mgoelich: $!\n" unless defined $child; unless($child) { $socket->close; my $peer = gethostbyaddr($session->peeraddr,AF_INET) || $session->peerhost; print "Verbindung von $peer auf Port $port akzeptiert ($$)\n"; print $session "Hallo $peer\n"; while(<$session>) { print $session "test\n"; } exit 0; } $session->close; }