IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Perl : socket client/serveur


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut Perl : socket client/serveur
    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 !!

  2. #2
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 16
    Par défaut
    si tu ne recois pas le message :

    print " Au revoir SERVEUR!!!:\n";
    ...c'est que le client bloque avant :

    while(my $reponse=<$socket> ){
    (il lit les messages du serveur, alors que le serveur n'envoit rien du tout)

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Lucdeux++
    Je ne vois pas que le serveur envoie quoique ce soit au client...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Par défaut
    Ce qui est bizarre dans ton client et serveur c'est que tu créer la connexion entre les deux entitées mais tu fait aucune communication entre le serveur et le client.

    Si tu veux que le serveur reçoivent quelque chose du client, il faut que tu lui envoi quelque chose du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print "*** BIENVENUE sur le serveur TELLABS 7100****\n";
    print $socket "Nouveau client\n";
    while(my $reponse=<$socket> ){
    De même si tu veux que le client reçoivent quelque chose du serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $client->autoflush(1);
    print $client "Bienvenu sur le SERVER !\n--- Je suis PID $$ ---\n";
    while (defined ($line = <$client> ) ) {

  5. #5
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 16
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Lucdeux++
    Je ne vois pas que le serveur envoie quoique ce soit au client...
    je ne vois pas ou j'ai dit que le serveur envoyait quoi que ce soit... au contraire, j'ai dit :

    le serveur n'envoit rien du tout

Discussions similaires

  1. Socket client serveur
    Par ppphil dans le forum C#
    Réponses: 1
    Dernier message: 08/09/2007, 10h57
  2. [C] Probleme avec socket client-serveur TCP
    Par LinuxUser dans le forum Réseau
    Réponses: 33
    Dernier message: 15/05/2007, 22h26
  3. [socket] client/serveur multi-thred
    Par iag_1980 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 03/03/2007, 15h38
  4. socket client serveur
    Par idino dans le forum Réseau
    Réponses: 3
    Dernier message: 29/01/2007, 14h45
  5. Socket client serveur
    Par rhdjml dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2006, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo