Gast: Hilfe bei TCP Server/Client

Beitrag lesen

Ich komm hier einfach nicht weiter. Kann mir jemand erklären warum der Server die Daten von <STDIN>  nicht bekommt ?

#!/usr/bin/perl  
#tcpserver.pl  
  
print "TCP-Server\n\n\n";  
  
use IO::Socket;  
use IO::Select;  
use strict;  
use warnings;  
  
# flush after every write  
$| = 1;  
  
my($lsn) = IO::Socket::INET->new( Listen => 5,  
				  LocalPort => 5000,  
				  Proto => 'tcp',  
				  Blocking => 0,  
				  ) or die "Error in Socket Creation : $!\n";  
  
my($sel) = new IO::Select($lsn);  
  
print "SERVER Waiting for client connection on port 5000\n";  
  
while (my(@ready) = $sel->can_read) {  
 foreach my $fh (@ready) {  
  if ($fh == $lsn) {  
   # Jetzt hast du eine Verbindung zu einem Client, über die du solange  
   #Daten austauschen kannst bis sie beendet wird.  
   # Ich würde $new_client z.B. in einem Array oder Hash unterbringen, da  
   #du darüber den Client ansprichst.  
   my($new_client) = $lsn->accept;  
   $sel->add($new_client);  
  
   # Was auch immer du mit $new_client vorhast, kommt hier  
  }  
  else {  
   # In diesem Abschnitt wird einer der Clients etwas gesendet haben.  
   # $client ist dasselbe wie $fh, ich leg zu meiner besseren Übersicht  
   #halt immer $client an  
   my($client) = $fh;  
   my($string) = <$client>; # Jetzt hast du in $string das stehen, was ein  
			    #Client gesendet hat.  
  
   # Was auch immer du mit nem String machen willst, das kommt dann hier.  
   print "Daten: $string\n";  
  }  
 }  
}  

#!/usr/bin/perl  
#tcpclient.pl  
  
print "TCP-Client\n\n\n";  
  
use IO::Socket::INET;  
use strict;  
use warnings;  
  
my ($data,$length);  
  
# flush after every write  
$| = 1;  
  
# creating object interface of IO::Socket::INET modules which internally creates  
# socket, binds and connects to the TCP server running on the specific port.  
my $socket = new IO::Socket::INET (  
				PeerHost => '127.0.0.1',  
				PeerPort => '5000',  
				Proto => 'tcp',  
				Blocking => 0,  
				) or die "ERROR in Socket Creation : $!\n";  
  
print "TCP Connection Success.\n\n";  
  
  
# read the socket data sent by server.  
  
while(1)  
  {  
    print "Bitte Text eingeben : ";  
    $data= <STDIN>;  
    $socket->send("$data\0");  
    $socket->recv($data,1024);  
    print ("Received from Server : $data\n\n");  
    }  
$socket->shutdown();