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

  1. #1
    Candidat au 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
    Points : 4
    Points
    4
    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 confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    quelle erreur as tu ?
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  3. #3
    Candidat au 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
    Points : 4
    Points
    4
    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 confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    essai de remplacer "localhost" par ta vraie adresse ip
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    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
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  6. #6
    Candidat au 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
    Points : 4
    Points
    4
    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.

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    essai peut etre une solution plus haut niveau, genre Net-EasyTCP ou RPC-Simple :

    http://search.cpan.org/~mnaguib/EasyTCP/
    http://search.cpan.org/~cedwards/RPC-Simple/
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  8. #8
    Candidat au 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
    Points : 4
    Points
    4
    Par défaut
    Je regarderai ce que tu proposes un de ces jours, ça a l'air intéressant. Merci.

    Je crois avoir une réponse à mon problème puisque je viens de découvrir un programme de ma Fedora qui plante aussi pour la même raison (l'interface graphique ne se connecte plus au moteur de calcul). J'ai vu que l'auteur de cette interface utilisait aussi Perl pour la communication serveur/socket.

    Conclusion, c'est probablement un bug dans l'implémentation de Perl dans Fedora 6.

  9. #9
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Essaye de télécharger la dernière version de Perl et du module, ça réglera peut être le problème, mais j'en doute...
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  10. #10
    Candidat au 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
    Points : 4
    Points
    4
    Par défaut
    Je n'ai pas trop envie de modifier la version de Perl officielle sur une distribution Linux. On doit pouvoir en installer une autre dans un coin sans modifier les centaines de dépendances, mais je ne sais pas faire.

    Je suis d'autres forums, si j'y trouve le remède je le posterai ici.

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    essai d'installer els modules dont je t'ai parlé
    si ils s'installe correctement (avec le make test) alors c'est qu'il n'y a pas de prob
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  12. #12
    Candidat au 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
    Points : 4
    Points
    4
    Par défaut
    Malheureusement ma freebox est HS, j'attends qu'on me la remplace. L'ordi avec la Fedora 6 n'est donc pas connectable à l'internet. J'essaierai dès que possible d'installer Net::EasyTCP et RPC::Simple.

    A+

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