1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sub send {
@_ >= 2 && @_ <= 4 or croak 'usage: $sock->send(BUF, [FLAGS, [TO]])';
my $sock = $_[0];
my $flags = $_[2] || 0;
my $peer = $_[3] || $sock->peername;
croak 'send: Cannot determine peer address'
unless(defined $peer);
my $r = defined(getpeername($sock)) #line 282
? send($sock, $_[1], $flags)
: send($sock, $_[1], $flags, $peer);
# remember who we send to, if it was successful
${*$sock}{'io_socket_peername'} = $peer
if(@_ == 4 && defined $r);
$r;
}
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/perl -w
#UDP_Client.pl
#Hartych, Tobias EIT 4056051
#Dreißig, Tobias EIT 40?????
use Time::HiRes qw(gettimeofday);
#Module importieren
#strict macht debugging einfacher
use strict 'vars';
use warnings;
#Modul wird benoetigt um Netzwerkfunktionen zu nutzen
use IO::Socket::INET;
#auto-flush
$| = 1;
#Variablen deklarieren
my ($socket,$ip,$port,$end,$start_sec,$start_usec,$end_sec,$end_usec,$timeDelta,$checksum_Client);
my ($daten,$Bestaetigung,$zip_daten);
$ip = $ARGV [0] || "127.0.0.1"; #erster Paramenter wird in $ipaddr eingespeichert
$port = $ARGV [1] || "9999"; #zweiter Paramenter wird in $ipaddr eingespeichert
#Socket erschaffen zur Kommunikation mit Server
$socket=new IO::Socket::INET
(
PeerAddr=>$ip, #PeerAddr von $sock ist eingegebener Paramenter $ipaddr
PeerPort=>$port, #PeerPort von $sock ist eingegebener Paramenter $port
Proto=>'udp' #Transportprotokoll: UDP
);
die "Konnte keine Verbindung herstellen: $!\n" unless $socket;
print "Mit $ip verbunden !\n";
#Hauptschleife
#do
while(1)
{
#Datei in String einlesen
open (DATEI, "test.txt") or die $!;
while(<DATEI>)
{
$daten = $daten.$_;
}
close (DATEI);
#Prüfsumme ermitteln
$checksum_Client = unpack ("%16C*", $daten); #Zeile 59
#Prüfsumme an Server senden
$socket->send($checksum_Client);
#packen
$Bestaetigung = 0;
print "3\n";
#Startzeit setzen
($start_sec, $start_usec) = gettimeofday();
while($Bestaetigung == 0)
{
print "31\n";
#Bestaetigung erhalten
$socket->recv($Bestaetigung,1024);
print "32\n";
if($Bestaetigung == 0)
{
print "33\n";
#sende Datenpakete zu Server
$socket->send($daten);
print "34\n";
}
}
#Endzeit setzen
($end_sec, $end_usec) = gettimeofday();
print "4\n";
#Sendezeit ermitteln
$timeDelta = ($end_usec - $start_usec)/1000 + ($end_sec - $start_sec)*1000;
print "Die Sendezeit betraegt: $timeDelta ms\n";
#Abfrage ob Programm beenden
print "Wenn Programm durchgeführt werden soll dann bitte j eingeben, ansonsten beliebiges anderes Zeichen eingeben\n";
$end = <STDIN>;
}
#while($end eq 'j');
#Schließe Socket
$socket -> close();