#!/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); my ($Dateien,$VerzPfad,$strAblageVer,$dateien,$strVerzeichnis); 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"; #Abfrage ob Programm beenden print "Wenn Programm durchgeführt werden soll dann bitte j eingeben, ansonsten beliebiges anderes Zeichen eingeben\n"; $end = ; #Hauptschleife while($end eq "j") { #definiere ip $peer_address = $socket->peerhost(); #definiere port $peer_port = $socket->peerport(); #Empfange Anzahl der zu sendenden Elemente $socket->recv($Anzahl_Elemente,1024); #Empfange Daten von Client $socket->send($_) for (@data); #Empfange und überprüfe Daten while ($Anzahl_Elemente != @data) { $Sende_erneut = 1; $socket->send($Sende_erneut); #Empfange Anzahl der zu sendenden Elemente $socket->recv($Anzahl_Elemente,1024); } $strVerzeichnis = "Verzeichnis_A"; $strAblageVer = "Verzeichnis_B"; #Kopieren foreach $dateien (@data) { copy($strVerzeichnis.'/'.$dateien,$strAblageVer.'/'.$dateien); } chdir($VerzPfad.$strAblageVer) or die (qq#ERROR chdir "$VerzPfad.$strAblageVer" ($!)\n#); #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 = ; } #Schließe Socket $socket -> close();