Hallo, hab einen UDP server, der requests empfaengt und eine Antwort an den client zurueck schickt,
und einen client der request versendet und eine Antwort empfaengt.
Der client-Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/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 ##############