#!/usr/bin/perl -w #UDP_Server.pl #Hartych, Tobias EIT 4056051 #Dreißig, Tobias EIT 40????? #Module importieren use strict 'vars'; #strict macht debugging einfacher use warnings; use IO::Socket::INET;#Modul wird benoetigt um Netzwerkfunktionen zu nutzen #auto-flush $| = 1; #Variablen deklarieren my ($end,$socket,$peer_address,$peer_port,$n,$i,$Anzahl_Elemente,$Sende_erneut,$Bestaetigung,$checksum_Client,$checksum_Server); my ($VerzPfad,$strAblageVer,$dateien,$strVerzeichnis,$daten); my (@data,@sortdata); my $ip = $ARGV [0] || "127.0.0.1"; #erste Paramenter wird in $ipaddr eingespeichert my $port = $ARGV [1] || "9999"; #zweite Paramenter wird in $ipaddr eingespeichert #Socket erschaffen zur Kommunikation mit Client $socket=new IO::Socket::INET ( LocalHost =>$ip,#LocalHost von $socket ist eingegebener Paramenter $ip LocalPort=>$port,#LocalPort von $sock ist eingegebener Paramenter $port Proto=>'udp'#Transportprotokoll: UDP ); die "Konnte keine Verbindung herstellen: $!\n" unless $socket; #wenn fehlgeschlagen dann schließen print "UDP Server bereit und wartet auf eine Verbingung mit Port $port\n"; #Hauptschleife while(1) #do { #Empfange Prüfsumme von Client $socket->recv($checksum_Client,1024); #definiere ip $peer_address = $socket->peerhost(); #definiere port $peer_port = $socket->peerport(); #Empfange und überprüfe Daten do { #Bestätige nicht erfolgreiches Senden $Bestaetigung = 0; $socket->send($Bestaetigung); $socket->recv($daten,1024); #Bilde Prüfsumme nach Empfang der Daten $checksum_Server = unpack ("%16C*", $daten); } while ($checksum_Client != $checksum_Server); #Bestätige erfolgreiches Senden $Bestaetigung = 1; $socket->send($Bestaetigung); $strVerzeichnis = "Verzeichnis_A"; $strAblageVer = "Verzeichnis_B"; #Wandle String in Array um @data = join(", ", $daten); #Kopieren use File::Copy; foreach $dateien (@data) { copy($strVerzeichnis.'/'.$dateien,$strAblageVer.'/'.$dateien); } chdir($VerzPfad.$strAblageVer) or die (qq#ERROR chdir "$VerzPfad.$strAblageVer" ($!)\n#); #line 90 #Entpacke foreach $dateien (@data) { system("/usrbin/unzip", $VerzPfad.$strAblageVer.'/'.$dateien) == 0 or die "Systemfehler: $?"; #zip-Dateien löschen unlink($VerzPfad.$strAblageVer.'/'.$dateien); } @sortdata = sort @data; #Gib Datei aus print join(",",@sortdata); #Abfrage ob Programm beenden print "Wenn Programm durchgeführt werden soll dann bitte j eingeben, ansonsten beliebiges anderes Zeichen eingeben\n"; $end = ; } #while($end = 'j'); #Schließe Socket $socket -> close();