Besoin d'aide sur les sockets
J'ai un petit problème de socket, j'ai un script A qui transmet des infos a un script B via une socket tcp, mon script A est équipé d'un serveur socket que voila
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #!/usr/bin/perl -w
# serveur.pl #
###############
use IO::Socket;
$server = IO::Socket::INET->new(
LocalPort => 1234,
Type => SOCK_STREAM,
Reuse => 1,
Listen => 5
) or die "Création du serveur impossible.\n";
print "Démarrage du serveur ..\n";
# données de test
my @mm = qw/ a b c d e /;
my $ml = [ @mm ];
for ($client = $server->accept()) {
print $client "@$ml";
} |
et mon script B d'un client que voila
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #!/usr/bin/perl -w
# client.pl #
##############
use IO::Socket;
my $socket = IO::Socket::INET->new(
PeerAddr => "localhost",
Proto => "tcp",
PeerPort => 1234
)
or die "Unable to connect to server.\n";
while ( @$ligne = <$socket> ) {
foreach my $i (@$ligne) {
print "$i\n";
}
} |
Mon problème est la boucle while du client en fait voila comment marche mon gros script, quand le lient recoit quelque chose a traité les données sont transmise a un sous prog dédié mais sa n'arrive jamais car jamais le client ne sort jamais de la boucle while :? , et s'il le fait beh il écoute plus :cry:
Comment faire pour que mon client écoute en permanance , et transmette les données a mon sous programme sans pour autant fermé la connexion sortir du while quoi , et ce meme si le serveur en face est hors jeux ?
merci