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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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

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