coolblue: print $socket zum Server in einer Endlos-Schleife

Hallo und guten Morgen,

hat jemand einen guten Rat für mich?

Wie kann ich in einer Endlos-Schleife Daten an einen Server senden ohne die Verbindung immer wieder neu aufzubauen?

Hier ein Fallbeispiel...

##################################################

mein Client:

$socket = IO::Socket::INET->new(
   PeerAddr => $ipaddr,
   PeerPort => $port,
   Proto    => "tcp",
   Type     => SOCK_STREAM
) or die "Kann Verbindung zu $ipaddr:$port nicht aufbauen\n";

while(1) {
   print $socket "<befehl>\n"; # 1. Schritt
   $ausgabe=<$socket>; # 2. Schritt
   <verarbeitung ausgabe> 3. Schritt
}

close($socket);

##################################################
##################################################

mein Server:

$server = IO::Socket::INET->new(
   LocalPort => $port,
   Type => SOCK_STREAM,
   Listen => 10,
   Reuse => 1
) or die "Kann Verbindung zu $port nicht aufbauen\n";

while($client = $server->accept()) {
   $befehl=<$client>;
   <ausführung befehl>
   print $client "$ausgabe\n";
}

close($server);

##################################################

Die while-Schleife des Clients wird genau einmal durchlaufen, beim zweiten Durchlauf bleibt sie am 2. Schritt hängen.

Eine passende Lösung habe ich schon gefunden... indem ich die Socketverbindung in der while-Schleife immer wieder öffne und schließe, aber genau das passt mir nicht so richtig :-)

Ich möchte gerne einmalig die Verbindung öffnen und erst zum Scriptende schließen.

Gruß,
coolblue

--
never say oops after you submitted a job :-)