print $socket zum Server in einer Endlos-Schleife
coolblue
- perl
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