#!/usr/bin/perl -w
# udp server
use strict;
use IO::Socket;
use Cwd;
use TIE::File;
### Pfad und Hilfsvariablen intitialisieren
my $aktuellesdir;
my $dirprefix;
#my $dirbin;
my $line; ## Hilfsvariable fuer line
my $quellfile="empfangsfile.txt";
my $EMPFANG;
### UDP Variablen initialisieren
my ($sock, $PORTNO, $MAXLEN, $nachricht);
$PORTNO = 4712;
#$PORTNO = 0;
$MAXLEN = 1024;
my $laenge;
my $startzeit;
$sock = IO::Socket::INET->new ( LocalPort=>$PORTNO, Proto=>'udp')
or die "socket: $@";
print "Warte auf UDP NAchricht auf Port $PORTNO$/";
### Pfade initialisieren
$aktuellesdir=getcwd;
$dirprefix="$aktuellesdir/";
### Datei vorbereiten
my $file = "$dirprefix"."$quellfile";
my @array_quellfile;
my $n_recs_array_quellfile;
if ( -e $file ) {
tie @array_quellfile, "Tie::File", $file || die "cannot open $file $!";
$n_recs_array_quellfile = @array_quellfile;
} else {
system(`touch $file`);
tie @array_quellfile, "Tie::File", $file || die "cannot open $file $!";
$n_recs_array_quellfile = @array_quellfile;
}
while ($sock->recv($nachricht, $MAXLEN)) {
$laenge = length($nachricht);
$startzeit = scalar localtime;
print "Zeitstempel: $startzeit : Laenge: $laenge : Der Client sagte ''$nachricht''$/";
#$sock->send("Zeitstempel: $startzeit : Du sagtest: ''$nachricht'' zu mir $/");
# $sock->send("Zeitstempel: Du sagtest: ''$nachricht'' zu mir $/");
#### print "$startzeit Der Client sagte ''$nachricht''$/";
#### $sock->send("Du sagtest: ''$nachricht'' zu mir $/");
$sock->send("Zeitstempel: ''$startzeit'' : Du sagtest: ''$nachricht'' zu mir $/");
push(@array_quellfile, $nachricht);
} die "recv: $!";
untie @array_quellfile;