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

Entrée/Sortie Java Discussion :

[commons-net] envoyer un Break


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [commons-net] envoyer un Break
    Bonjour,

    Lors d'une connexion telnet je dois envoye un break

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	OutputStream outstr = getOutputStream();
    ...
            outstr.write(TelnetCommand.getCommand(TelnetCommand.BREAK));
            outstr.flush();
    ...
    cela ne semble pas fonctionner .... Auriez vous une autre suggestion ?

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Quelle bibliothèque utilises-tu ? Quelle est l'erreur ? Quel est le code produisant l'erreur ? Autant de questions dont les réponses sont importantes pour t'aider

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'utilise la librairie commons-net de jakarta, en fait je ne recois pas d'erreur, par-contre le serveur avec lequel je correspond devrais retourner une reponse specifique, mais il me retourne rien ... Ca fonctionne en commmand line, via un client telnet...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	    TerminalTypeOptionHandler ttopt = new TerminalTypeOptionHandler ("VT100", false, false, true, false);
    	    EchoOptionHandler echoopt = new EchoOptionHandler (true, false, true, false);
    	    SuppressGAOptionHandler gaopt = new SuppressGAOptionHandler(true, true, true, true);
    	    addOptionHandler(ttopt);
    	    addOptionHandler(echoopt);
    	    addOptionHandler(gaopt);
    j'ai tester cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PrintStream printstr = new PrintStream(getOutputStream());
    ..
       printstr.println(TelnetCommand.getCommand(TelnetCommand.BREAK));
       printstr.flush();
    ..
    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OutputStream outstr = getOutputStream();
     
    outstr.write(new byte[]{(byte)TelnetCommand.IAC, (byte)TelnetCommand.BREAK});
     outstr.flush();
    Merci

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Tu dois écrire les bytes CR et LF (0x0A 0x0d) pour aller à la ligne et faire comprendre au serveur que tu envoies le tout. Un flush suivant ces deux caractères est toujours le bienvenu.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Par-contre, Si j'utilise la méthode println de la classe PrintStream sommes nous obliger ne mettre les bytes CR et LF ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    PrintStream printstr = new PrintStream(getOutputStream());
     
    printstr.println({ (byte) TelnetCommand.IAC, (byte) TelnetCommand.BREAK });
    printstr.flush();
    Merci

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Non, effectivement. Je me suis basé sur ton premier exemple. Mais est-il utile alors d'envoyer le byte BREAK ? Essaie sans : son comportement me paraît un peu suspect. En fait, envoie une commande, finis-la par CR LF (ou utilise println) et regarde. Je crois que ça passera mieux.

    Enfin, après une courte réflexion, le CR LF pourrait être meilleur que println(), car dans mon souvenir println() récupère la manière standard de la plate-forme pour aller à la ligne (avec windows, c'est CR LF, avec linux: LF seulement et avec MacOS: CR, bien que je puisse me tromper en intervertissant pour linux & MacOS). Et un serveur Telnet demande CR LF explicitement.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'ai tester et malheureusement cela ne fonctionne pas et je dois obligatoirement envoyer un break avant le login.....

    Merci

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Pour les personnes intéressées.


    Ajouter dans classe : Telnet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...
        static final byte[] _COMMAND_BRK = { (byte) TelnetCommand.IAC, (byte) TelnetCommand.BREAK };
    ...
     
        final void _sendBRK()
        throws IOException, IllegalArgumentException
        {
            _output_.write(_COMMAND_BRK);
            _output_.flush();
        }
    ...
    Ajouter dans la classe : TelnetClient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
        public void sendBRK()throws IOException, IllegalArgumentException, InterruptedException{
             _sendBRK();
        }
    ...

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

Discussions similaires

  1. API commons.net.ftp d'APPACHE : IOException
    Par kam81 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 20/12/2006, 09h03
  2. [vb.net] envoyer recevoir mails
    Par progia dans le forum VB.NET
    Réponses: 5
    Dernier message: 03/12/2006, 11h13
  3. [VB6>VB.NET] Comment coder "break on all errors"
    Par RiiiDD dans le forum VB.NET
    Réponses: 5
    Dernier message: 07/03/2006, 12h53
  4. [VB.NET] Envoyer TreeNodes dans une socket
    Par Aspic dans le forum VB.NET
    Réponses: 10
    Dernier message: 18/02/2006, 16h29
  5. [VB.NET] Envoyer des e-mails !
    Par Ludog35 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 26/10/2005, 16h50

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