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

Programmation et administration système Perl Discussion :

[reseaux] Communication socket/serveur - ne fonctionne plus !


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par défaut [reseaux] Communication socket/serveur - ne fonctionne plus !
    Bonjour,

    J'avais mis au point une procédure de communication entre deux programmes qui fonctionnait très bien sur beaucoup de plateformes (divers Windows, divers Solaris, divers Linux, divers BSD), mais depuis que j'ai mis à jour ma Fedora (v5 vers v6), ça ne fonctionne plus.

    J'ai extrait deux petits scripts qui mettent en évidence le problème. Le premier est un serveur à lancer dans un shell, le second un client à lancer ensuite dans un autre shell:

    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/local/bin/perl -w
     
    use IO::Socket;
     
    $server1 = IO::Socket::INET->new(
       LocalPort => 2000,
       Type      => SOCK_STREAM,
       Reuse     => 1,
       Listen    => 5
       ) or die "\nCreation du serveur sur port 2000 impossible.\n";
     
    print "\nSERVEUR SUR PORT 2000: OK\n";
     
    $client_blabla = $server1->accept();
     
    print  $client_blabla "MESSAGE DU SERVEUR VERS LA SOCKET\n\n\n";
     
    $ligne = <$client_blabla>;
    print "MESSAGE De LA SOCKET REÇU PAR LE SERVEUR = $ligne\n";
    client

    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/local/bin/perl
     
    use IO::Socket;
     
    $socket1 = IO::Socket::INET->new(
            Type  => SOCK_STREAM,
            PeerAddr => "localhost",
            Proto => "tcp",
            PeerPort => 2000
            ) or die "Cannot open socket on port 2000.\n";
     
     
    print  $socket1 "Message de la socket vers le serveur\n\n\n";
     
    # Réponse de <server1>
    $ligne = <$socket1>;
    print "Message du serveur reçu par la socket = $ligne\n
    Lorsqu'ils communiquent correctement, des messages sont écrits dans le deux shells.

    J'ai vérifié que les modules Perl-IO-socket-INET6 et Perl-IO-socket-SSL sont bien installés.

    La seule différence entre avant et maintenant, c'est à priori l'utilisation de Perl 5.8.8 alors que les autres essais ont été réalisés avec un e version plus ancienne.

    Pourquoi ça coince avec Fedora/Perl 5.8.8 ? si quelqu'un a une idée, merci.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    quelle erreur as tu ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par défaut Pas de message d'erreur, ça bloque...
    Lorsque cela fonctionne j'ai du coté serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SERVEUR SUR PORT 2000: OK
    MESSAGE De LA SOCKET REÇU PAR LE SERVEUR = Message de la socket vers le serveur
    et du côté client

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Message du serveur reçu par la socket = MESSAGE DU SERVEUR VERS LA SOCKET
    Sous Fedora / Perl 5.8.8 je n'ai que le premier message qui indique que le serveur est OK. C'est tout, c'est semble t-il l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $client_blabla = $server1->accept();
    qui bloque (?)

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    essai de remplacer "localhost" par ta vraie adresse ip

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    essai aussi peut etre de virer le print $socket1 dans ton client, ca peut bloquer à ce niveau si le buffer de socket est vraiment petit

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par défaut
    Merci pour tes suggestions mais ça n'a pas décoincé le client.

    Pour info, j'ai aussi désactivé le firewall, essayé plusieurs autres modifs comme des valeurs de port plus exotiques, le protocole udp, etc... rien n'y fait.

Discussions similaires

  1. [Google Calendar API V3] Passage de local a serveur ne fonctionne plus
    Par fabs570 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 14/08/2014, 12h36
  2. Réponses: 4
    Dernier message: 15/06/2007, 16h27
  3. Socket - Problème de communication client/serveur
    Par Arkinou dans le forum Réseau
    Réponses: 4
    Dernier message: 31/05/2007, 15h01
  4. Problème communication sockets serveur mutli-client
    Par muad'dib dans le forum Réseau
    Réponses: 5
    Dernier message: 17/05/2007, 02h21
  5. Réponses: 8
    Dernier message: 18/04/2007, 14h26

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