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
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
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"; }
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
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"; } }
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
Partager