#!/usr/bin/perl # udp client use strict; use Tie::File; use Socket qw(:DEFAULT :crlf); $/ = CRLF; use constant DEFAULT_HOST =>'192.168.178.23'; use constant DEFAULT_PORT =>'4712'; use constant MAX_MSG_LEN => 100; my $host = shift ||DEFAULT_HOST; my $port = shift ||DEFAULT_PORT; my $counter=0; my @array_file; my $protocol = getprotobyname('udp'); $port = getservbyname($port, 'udp') unless $port =~ /^\d+$/; my $data; my $sendung; socket(SOCK, AF_INET, SOCK_DGRAM, $protocol) or die "socket() gescheitert: $!"; my $dest_addr = sockaddr_in($port, inet_aton($host)); ## Sende-Empfangsschleife ## while(1) { fill_with_tie(); ## Sendedaten aus Datei lesen print "Laenge sendung: length($sendung) \n\n"; if ( length($sendung) == 0 ) { $sendung = 'init'; } # if print "sendung: $sendung\n\n"; send(SOCK, $sendung, 0, $dest_addr) or die "send() gescheitert: $!"; recv(SOCK, $data, MAX_MSG_LEN, 0) or die "receive() gescheitert $!"; fill_empfang_file($data); ## Empfang in Datei schreiben chomp($data); print "Empfangen: $data \n"; sleep(3); } # while sub fill_with_tie { my $file = "meinfile.txt"; my $line; my $elem; $sendung =''; if ( -e $file ) { tie @array_file, "Tie::File", $file || die $!; foreach $elem (@array_file) { chomp $elem; $sendung= $sendung ."$elem"; } ## foreach untie @array_file; } else { print "Kann $file nicht oeffnen $!$/"; } ## if -s $file } ## fill_with_tie ################# sub fill_empfang_file { my $file="empfangsfile.txt"; my $line = @_[0]; my $elem; print "Operator: $line \n"; open (EMPFANG, ">>$file") or die "Kann $file nicht oeffnen $!\n"; print EMPFANG "$line\n"; close(FILE); } ## fill_empfang_file ##############