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 PHP Discussion :

[Réseau] séquencement de la socket


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 120
    Points : 68
    Points
    68
    Par défaut [Réseau] séquencement de la socket
    J'utilise une classe pour faire faire une connexion telnet mais j'ai un problème, je veux créer un formulaire avec 2 champs mais on dirait que ça ne marche pas coté séquencement des informations, mais si je n'utilise pas le formulaire ça marche.
    Voici le code sans formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $hostname = "192.168.2.1";
    $tn = new telnet($hostname,23);
    sleep(2);
    echo $tn->read_till("> ");
    $tn->write("sh int");
    echo $tn->read_till("> ");
    $tn->write("sh conf");
    echo $tn->read_till("> ");
    echo $tn->close();
    Celui là ça marche impeccable mais ce n'est pas pratique pour mettre à chaque fois la commande de façon statique et le deuxième aussi marche mais pas de façon à lire les données d'une façon continue de la socket (on dirait qu'il réinitialise la socket après chaque submit)
    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
    $loginprompt='>'
    $hostname = "192.168.2.1";
    $tn = new telnet($hostname,23);
    if(isset($_POST['command']) && !empty($_POST['command']))
    {
    $tn->write($_POST['command']."\r\n");
    sleep(2);
          if (($_POST['command']=='enable') || ($_POST['command']=='en'))
           {
    	   $loginprompt="#";
    	   $tn->write($mdp);
               sleep(2);
     
           }   
    $resultat.=tn->lire_juska($loginprompt);
    sleep(2);
    }
    $_SESSION['resultat'].=$resultat;
    ?>
    <form name="saisie" method="post" action="<?php $PHP_SELF ?>">
    <input type="text" name="command" size="60">
    <textarea cols="80" rows="20" name="result" style="overflow:visible" readonly="readonly" id="area"><?php echo $_SESSION['resultat']; ?></textarea>
    </form>
    je bloque vraiment svp un peu d'aide

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 120
    Points : 68
    Points
    68
    Par défaut
    je résume :
    1) j'ai une page web avec un formulaire
    2) j'ai un script qui ouvre une connexion telnet et fait suivre ce qui est demandé
    3) je constates que la connexion telnet se coupe à chaque fois et que le script en ouvre une nouvelle à chaque fois que je veux faire quelque chose.
    n'y a t-il pas un moyen d'ouvrir une connexion réseau à l'appel d'une page web et la garder ouverte pour l'appel de la page suivante. n'ya t-il pas un moyen de contourner ça????
    voici ma classe:
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    class Telnet {
            var $sock = NULL;
     
            function telnet($host,$port) {
            $this->sock = fsockopen($host,$port);
                    socket_set_timeout($this->sock,2,0);
            }
     
        function close() {
            if ($this->sock)
                fclose($this->sock);
            $this->sock = NULL;
            }
     
        function write($buffer) {
                    $buffer = str_replace(chr(255),chr(255).chr(255),$buffer);
            fwrite($this->sock,$buffer);
            }
     
            function getc() {
                    return fgetc($this->sock);
            }
     
        function read_till($what) {
            $buf = '';
                    while (1) {
                            $IAC = chr(255);
     
                            $DONT = chr(254);
                            $DO = chr(253);
     
                            $WONT = chr(252);
                            $WILL = chr(251);
     
                            $theNULL = chr(0);
     
                            $c = $this->getc();
     
                            if ($c === false)
                              return $buf;
     
                            if ($c == $theNULL) {
                                    continue;
                            }
     
                            if ($c == "\021") {
                                    continue;
                            }
     
                            if ($c != $IAC) {
                                    $buf .= $c;
     
                                    if ($what == (substr($buf,strlen($buf)-strlen($what)))) {
                                            return $buf;
                                    } else {
                                            continue;
                                    }
                            }
     
                            $c = $this->getc();
     
                            if ($c == $IAC) {
                                    $buf .= $c;
                            } else if (($c == $DO) || ($c == $DONT)) {
                                    $opt = $this->getc();
                            // echo "we wont ".ord($opt)."\n";
                                    fwrite($this->sock,$IAC.$WONT.$opt);
                            } elseif (($c == $WILL) || ($c == $WONT)) {
                                    $opt = $this->getc();
                            // echo "we dont ".ord($opt)."\n";
                                    fwrite($this->sock,$IAC.$DONT.$opt);
                            } else {
                            // echo "where are we? c=".ord($c)."\n";
                            }
                    }
     
            }
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 120
    Points : 68
    Points
    68
    Par défaut
    mon probleme est résolu j'ai remplacé fsockopen par pfsockopen.

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

Discussions similaires

  1. Scanner réseau local avec MFC + sockets
    Par LuffyyffuL dans le forum MFC
    Réponses: 11
    Dernier message: 26/04/2012, 16h48
  2. [réseau] interet de plusieurs socket
    Par yenshin dans le forum Architecture
    Réponses: 0
    Dernier message: 08/11/2011, 10h29
  3. [Réseau] persistance d'une socket en PHP
    Par iznogoud36 dans le forum Langage
    Réponses: 4
    Dernier message: 05/10/2006, 14h47
  4. [Réseau] Problème socket
    Par neenee dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 18/01/2005, 15h26
  5. [Réseau] Programmation socket
    Par raj dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 03/12/2004, 12h58

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