Perl : socket client/serveur
Bonsoir,
J'aimerais faire du client-serveur intéractif en Perl.
et j'ai un serveur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #!/usr/bin/perl
use strict;use warnings;
use IO::Socket;
my $client ;
my $serveur;
my $reponse;
$serveur = IO::Socket::INET->new(LocalPort => 8080,
Type => SOCK_STREAM,
Reuse => 1,
Listen => 10)
or die "Impossible de ce connecter sur le port 3083 : $@\n";
print" Demarrage du serveur...\n";
while ($client = $serveur->accept()) {
$client->autoflush(1);
while (defined ($line = <$client> ) ) {
print("line vaut $line \n" );
}
}
close($serveur);
Et j'ai un client.pl
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
my ( $kidpid, $line);
my $socket = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => "$ host",
PeerPort => 8080)
or die "Failed : $@\n";
print "*** Debut de connexion ***\n";
print "*** BIENVENUE sur le serveur TELLABS 7100****\n";
while(my $reponse=<$socket> ){
print "server> : $reponse\n";
}
print " Au revoir SERVEUR!!!:\n";
if ($kidpid) {
# copie la socket sur la sortie standard
while (defined ($line = <$socket> )) {
print STDOUT $line;
}
kill("TERM", $kidpid);
# envoie SIGTERM au fils
}
# le bloc else{} n'est traverse que dans le fils
else {
# copie l'entree standard sur la socket
while (defined ($line = <STDIN> )) {
print $socket $line;
}
}
#close($socket); |
Mon problème :
La connexion réussie, et le client reçoit et affiche les messages d'accueil du serveur.
Mais après la première ligne rentrée au clavier, çà se "bloque". Et le serveur ne recoit même pas cette ligne.
Merci d'avance pour votre aide !!