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]Net::Ping et $ret


Sujet :

Programmation et administration système Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 13
    Points : 8
    Points
    8
    Par défaut [reseaux]Net::Ping et $ret
    Bonjour,

    J'exécutte ce code sans probleme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ($ret, $duration, $ip) = $p->ping($host,2);
    printf("$host [ip: $ip] is alive (packet return time: %.2f ms)\n", 1000 * $duration) if ($ret);
    Je ne comprend pas vraiment ce qu'il y a derière la variable $ret, si je teste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ($ret, $duration, $ip) = $p->ping($host,2);
    if $ret
    {printf("$host [ip: $ip] is alive (packet return time: %.2f ms)\n", 1000 * $duration);}
    Cela ne fonctionne plus. Quelqu'un sait de quoi il retourne? et éventuellement comment ajouter un else dans le code qui marche?

    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 22
    Points : 26
    Points
    26
    Par défaut
    D'apres http://search.cpan.org/~bbb/Net-Ping...ib/Net/Ping.pm

    Tu devrais plutot faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      ($ret, $duration, $ip) = $p->ping($host, 5.5);
        printf("$host [ip: $ip] is alive (packet return time: %.2f ms)\n", 1000 * $duration)
          if $ret;
        $p->close();
    Mais je comprends pas bien pourquoi ton code marchais pas

    surtout en lisant ca
    Otherwise, the success flag will be 1 if the host is reachable and 0 if it is not

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Le code que tu me suggères est celui que je cite en 1er (exepté mon timeout plus bas) et qui marche aussi chez moi mais je souhaites faire un else dans le cas ou le ping ne marche pas.

    Comme toi, je ne comprend pas ou ce situe le soucis :-/

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Simple, il faut lire la doc et tu t'aperçevra qu'il faut des parenthèses autour du test du if() { } (elle ne sont d'ailleurs pas indispensable si tu mets le if après, pourtant tu les as mises...), donc pour un else :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ($ret, $duration, $ip) = $p->ping($host,2);
    if ( $ret ) {
        printf("$host [ip: $ip] is alive (packet return time: %.2f ms)\n", 1000 * $duration);
    } else {
     
    }
    Tout simplement...

    --
    Jedaï

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci, je testerai cela demain.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if ( &ret )
            {
            printf("$host [ip: $ip] is alive (packet return time: %.2f ms)\n", 1000 * $duration);
            } else {print ("testetetetest");}
    Ca ne marche pas, message d'erreur:

    Undefined subroutine &main::ret called at ./ping.pl line 65.

  7. #7
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    ca marchera mieux si tu mets $ret à la place de &ret.

    @+
    Mr6

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    oups, quel distrait je fais.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Undefined routine avec le module Net::Ping::External
    Par vercetty92 dans le forum Modules
    Réponses: 2
    Dernier message: 08/01/2010, 14h33
  2. [VB.NET 1.1] Ping silencieux avec Process.Start()
    Par toniolol dans le forum Windows Forms
    Réponses: 6
    Dernier message: 30/09/2008, 13h35
  3. net send marche, mais pas ping...
    Par rvfranck dans le forum Administration
    Réponses: 7
    Dernier message: 04/02/2006, 22h09
  4. [Reseaux] Net send
    Par nico33307 dans le forum Administration
    Réponses: 9
    Dernier message: 08/06/2005, 23h59
  5. [reseaux] Recuperer le statut d'un ping
    Par Mu_Belier dans le forum Programmation et administration système
    Réponses: 7
    Dernier message: 09/06/2004, 11h13

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