Server und Client für TCP und UDP

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.

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();
 
Hat sich erledigt :)
 

Ähnliche Themen

Unix Webserver mit HTML Seite erstellen

"send: Cannot determine peer address" nach Timeout mit UDP Server -Perl Socket eval{}

JBidWatcher: Problem bei loading Auctions in Verbindung mit mySQL

Debian Routing Problem

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Zurück
Oben