#!/usr/bin/perl use strict; use warnings; #Pragmas einbinden #IO::Socket Modul einbinden, mit DEFAULT und CRLF use IO::Socket qw(:DEFAULT :crlf); #Konstante definieren use constant MY_PORT => '2050'; #CRLF als Zeilenende verwenden $/ = CRLF; #$quit deklarieren my $quit = 0; #STRG+C abfangen $SIG{'INT'} = sub { $quit++; }; #$port Wert zuweisen my $port = shift || MY_PORT; #IO::Socket Objekt erzeugen my $socket = IO::Socket::INET->new( Listen => 20, LocalPort => $port, Timeout => 60*60, Reuse => 1) || die "Konnte Socket Objekt nicht erzeugen: $!"; warn "Warte auf ankommende Verbindung auf Port $port...\n"; #Schleife, wenn $quit nicht wahr ist while(!$quit) { #Verbindungen akzeptieren next unless my $session = $socket->accept; #Peer host identifizieren my $peer = gethostbyaddr($session->peeraddr,AF_INET) || $session->peerhost; #Verbindungsport überprüfen my $Port = $session->peerport; #Meldung ausgeben warn "Verbindung von $peer, $Port\n"; #Schleife, was bei einer Verbindung passiert while(<$session>) { my $msg_out = $_ . CRLF; print $session $msg_out; } #Verbindungsende ausgeben warn "Verbindung von $peer, $Port beendet...\n"; #Session schließen close($session); } #Socket schließen close $socket;