I
ITobiI
Grünschnabel
Hi,
ich muss vorweg nehmen das ich zum ersten mit Perl programmiere. Ich soll 4 Programme schreiben TCP-Server und -Client und UDP-Server und -Client und beim TCP-Client kommt immer die Fehlermeldung "invalid argument". Könntet ihr auch in die anderen Skripte rein schauen ob die soweit ok sind? Danke im voraus.
ich muss vorweg nehmen das ich zum ersten mit Perl programmiere. Ich soll 4 Programme schreiben TCP-Server und -Client und UDP-Server und -Client und beim TCP-Client kommt immer die Fehlermeldung "invalid argument". Könntet ihr auch in die anderen Skripte rein schauen ob die soweit ok sind? Danke im voraus.
Code:
#!/usr/bin/perl -w
#TCP-Server
#Hartych, Tobias EIT 4056051
#Dreißig, Tobias EIT 40?????
use strict; #strict macht debugging einfacher
use IO::Socket::INET; #nutze Modul IO::Socket::INET um einen neuen Socket zu erschaffen
#auto-flush
$| = 1;
#Variablen deklarieren
my ($socket,$connection,$data);
my($peeradr,$peerport);
#bekomme server-ip und server-port von Kommandozeilenparamter
my $ipAddress = $ARGV[0]; #erster Paramenter wird in $ipAddress eingespeichert
my $NPort = $ARGV[1]; #zweiter Paramenter wird in $NPort eingespeichert
$socket = new IO::Socket::INET(
LocalHost => $ipAddress, #LocalHost von $socket ist eingegebener Paramenter $ipAddress
LocalPort => $NPort, #LocalPort von $socket ist eingegebener Paramenter $NPort
Proto => 'tcp', #Transportprotokoll: TCP
Listen => 5, #maximale Anzahl von Client's ist 5
Reuse => 1
);
die "Fehler beim erstellen des Socket's: $! \n" unless $socket;
#Hauptschleife
while (1)
{
print "Warte auf Verbindung mit Client ..\n";
$connection = $socket->accept(); #Warte auf Verbindung zum Client / Akzeptiere eingehende Client Verbindung
$peeradr = $connection -> peerhost();
#definiere IP-Adresse von Client
$peerport = $connection -> peerport();
print "Verbindung mit client: $peeradr:$peerport\n";
#Lies bis zu 1024 Bytes vom verbundenen Client
$data = "";
$connection->recv($data, 1024);
print "Empfangene Daten: $data\n";
#Schreibe Antwort zu verbundenen Client
print "Antwort:\n";
$data = <STDIN>;
$connection->send($data);
#Informiere Client das Antwort gesendet wurde
shutdown($connection, 1);
}
#Schließe Socket -> schliesse Verbindung zum Client
$socket -> close();
Code:
#!/usr/bin/perl -w
#TCP-Client
#Hartych, Tobias EIT 4056051
#Dreißig, Tobias EIT 40?????
use strict; #strict macht debugging einfacher
use IO::Socket::INET; #nutze Modul IO::Socket::INET um einen neuen Socket zu erschaffen
#auto-flush
$| = 1;
#Variablen deklarieren
my ($socket,$response,$size,$req);
#bekomme server-ip und server-port von Kommandozeilenparamter
my $peeradr = $ARGV[0]; #erster Paramenter wird in $PeerAdress eingespeichert
my $peerport = $ARGV[1]; #zweiter Paramenter wird in $PeerPort eingespeichert
$socket = new IO::Socket::INET
(
PeerHost => $peeradr, #PeerAddr von $socket ist eingegebener Paramenter $PeerAdress
PeerPort => $peerport, #PeerPort von $socket ist eingegebener Paramenter $PeerPort
Proto => 'tcp', #Transportprotokoll: TCP
);
die "Fehler bei erstellen des Socket's: $!\n" unless $socket;
print "\nVerbindung mit Server erfolgreich!\n";
#Daten, welche zum Server gesendet werden
$req = <STDIN>;
$size = $socket->send($req);
print "sende Daten mit einer Laenge von $size\n";
#informiere Server das Daten gesendet wurden
shutdown($socket, 1);
#erhalte eine Antwort von bis zu 1024 Bytes vom Server
$response = "";
$socket->recv($response, 1024);
print "Erhaltene Antwort\n";
#Schließe Socket
$socket -> close();
Code:
#!/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 IO::Socket::INET;#Modul wird benoetigt um Netzwerkfunktionen zu nutzen
#auto-flush
$| = 1;
#Variablen deklarieren
my ($socket, $message,$peer_address,$peer_port);
#bekomme ip und port von Kommandozeilenparamter
my $ip=$ARGV[0]; #erste Paramenter wird in $ipaddr eingespeichert
my $port = $ARGV[1]; #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)
{
#empfange bis zu 1024 bytes von client, packe empfangene Daten in $message Variable
$socket->recv($message,1024);
#definiere ip
$peer_address = $socket->peerhost();
#definiere port
$peer_port = $socket->peerport();
#sende $message zurueck zu client
$socket->send($message);
}
#Schließe Socket
$socket -> close();
Code:
#!/usr/bin/perl -w
#TCP-Client
#Hartych, Tobias EIT 4056051
#Dreißig, Tobias EIT 40?????
use strict; #strict macht debugging einfacher
use IO::Socket::INET; #nutze Modul IO::Socket::INET um einen neuen Socket zu erschaffen
#auto-flush
$| = 1;
#Variablen deklarieren
my ($socket,$response,$size,$req);
#bekomme server-ip und server-port von Kommandozeilenparamter
my $peeradr = $ARGV[0]; #erster Paramenter wird in $PeerAdress eingespeichert
my $peerport = $ARGV[1]; #zweiter Paramenter wird in $PeerPort eingespeichert
$socket = new IO::Socket::INET
(
PeerHost => $peeradr, #PeerAddr von $socket ist eingegebener Paramenter $PeerAdress
PeerPort => $peerport, #PeerPort von $socket ist eingegebener Paramenter $PeerPort
Proto => 'tcp', #Transportprotokoll: TCP
);
die "Fehler bei erstellen des Socket's: $!\n" unless $socket;
print "\nVerbindung mit Server erfolgreich!\n";
#Daten, welche zum Server gesendet werden
$req = <STDIN>;
$size = $socket->send($req);
print "sende Daten mit einer Laenge von $size\n";
#informiere Server das Daten gesendet wurden
shutdown($socket, 1);
#erhalte eine Antwort von bis zu 1024 Bytes vom Server
$response = "";
$socket->recv($response, 1024);
print "Erhaltene Antwort\n";
#Schließe Socket
$socket -> close();