Bonsoir,
J'aimerais faire du client-serveur intéractif en Perl.


et j'ai un serveur :

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
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 !!