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

Java Discussion :

Récupération d'une adresse IP d'un TextField


Sujet :

Java

  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut Récupération d'une adresse IP d'un TextField
    Bonjour,

    j'essai de récupérer des arguments pour un application externe que j'exécute en cliquant sur le bouton jToogleBoutton3

    voilà mon code
    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
     
    private void jToggleButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                               
            // TODO add your handling code here:
            String array[]= new String[5];
            array[1] = User.getText();
            array[2]= Password.getText();
            array[3]= Port.getText();
            array[4] = IpAddr.getText();
           // array[5]= File.getText();
     
             jTextArea2.setText("Début du programme\n");
             try {
                String[] commande = {"receiver.exe","array[3]","array[4]","array[1]","array[2]"};
                Process p = Runtime.getRuntime().exec(commande);
                BufferedReader output = getOutput(p);
                BufferedReader error = getError(p);
                String ligne = "";
     
             while ((ligne = output.readLine()) != null) {
                    jTextArea2.append(ligne);
                }
     
             while ((ligne = error.readLine()) != null) {
                    jTextArea2.append(ligne);
                }
     
                p.waitFor();
            } catch (IOException | InterruptedException e) {
                e.printStackTrace();
            }
            jTextArea2.append("\nFin du programme\n");
        }
    ça se compile correctement sauf que à l’exécution mon application externe m'indique l'erreur que son deuxième arguments n'est pas valide

    je pense que lorsque l'utilisateur tape une addresse Ip gettext ne la récupère pas comme elle est !!
    SVP Heelp!

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Tel que c'est écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] commande = {"receiver.exe","array[3]","array[4]","array[1]","array[2]"};
    au lieu de recevoir l'ip contenue dans array[4], il reçoit :"array[4]" !!!!
    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] commande = {"receiver.exe",array[3],array[4],array[1],array[2]};
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut
    Bien dit! je viens aussi de la constateer

    le problème c'est maintenant mon application ne reçoit pas les arguments suffisants je ne sais pas pourquoi

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Ben, là, il faudrait voir la doc de receiver.exe
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut
    je veux juste s'assurer que ma commande est bien correcte !!
    car j'ai tout vérifié dans mon receiver.exe plutot j'ai vérifié son code..

    dois je faire recours à process builder !! est ce ça peut etre problème de flux sortant de l'application java entrant à mon application C

  6. #6
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par samy2590 Voir le message
    je veux juste s'assurer que ma commande est bien correcte !!
    car j'ai tout vérifié dans mon receiver.exe plutot j'ai vérifié son code..
    On ne parle pas de son code, l'on parle de ses paramètres d'entrée seulement.

    Citation Envoyé par samy2590 Voir le message
    dois je faire recours à process builder !! est ce ça peut etre problème de flux sortant de l'application java entrant à mon application C
    Tu peux toujours te taper la lecture de ce tutoriel qui t'éclaircira sut ce que tu utilises : http://ydisanto.developpez.com/tutor.../runtime-exec/

    Citation Envoyé par samy
    le problème c'est maintenant mon application ne reçoit pas les arguments suffisants je ne sais pas pourquoi
    1. Tu te penches sur la documentation des paramètres d'entrée de receiver.exe.
    2. Tu testes un appel de receiver.exe avec des arguments figés directement en ligne de commande.
    3. Tu traces la commande que tu construits en Java et tu la compares.
    En gros, tu fais du debug quoi..
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  7. #7
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut
    Oui tout à fait je trace la commande et je la compare avec celle demandée par mon receiver.exe et elles sont conforme .. en vain l'erreur est toujours là.

    je vais revoir mon receiver.exe surement.

    Je me demande si je veux récupérer le flux que j'envoie à mon application externe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     private static BufferedReader getIntput(Process p) {
            return new BufferedReader(new OutputStreamReader(p.getOutputStream()));
        }
    et dans ma classe main je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     BufferedReader intput = getIntput(p);
    while ((ligne = output.readLine()) != null) {
                    jTextArea2.append(ligne);
                }


    le symbole "OutputStreamReader" reste non reconnu mais si je fais import java.io.OutputStream;

  8. #8
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par samy2590 Voir le message
    le symbole "OutputStreamReader" reste non reconnu mais si je fais import java.io.OutputStream;
    OutputStreamReader ça n'existe pas. Tu dois parler de OutputStream ou InputStreamReader.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  9. #9
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut
    OutputStream ne peut pas alors m'assurer ce retour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return new BufferedReader(p.getOutputStream());
    comment puis je récupérer p.getOutputStream !! je suis perdue :s

  10. #10
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut gestion threads
    j'ai apporté encore des modifications à mon code mais cette fois je paux plus voir le flux reçu jusqu'à déconnextion du serveur sinon mon application risque d'etre plantée ..

    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
    80
    81
    82
    83
    84
    85
    86
     
       private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                               
            // TODO add your handling code here:
            String array[]= new String[5];
            array[0] = User.getText();
            array[1]= Pass.getText();
            array[2]= Port.getText();
            array[3] = Ip.getText();
           //array[5]= File.getText();
           String[] commande = {"receiver.exe",array[2],array[3],array[0],array[1]};
     
             jTextArea1.append("Début du programme\n"); 
     
             jTextArea1.append(commande[0]);
             jTextArea1.append(commande[1]);
             jTextArea1.append(commande[2]);
            // jTextArea1.append(commande[3]);
           // jTextArea1.append(commande[4]);
             /*jTextArea2.append(commande[5]);*/
     
             try {
                 jTextArea1.append("commencer\n");
     
                ProcessBuilder p = new ProcessBuilder(commande);
     
              /*  Map env = p.environment();
                for (Entry entry : env.entrySet()) {
                    jTextArea2.append(entry.getKey() + " : " + entry.getValue());
                }
                //env.put("out",*/
     
                final Process pb = p.start();
                /*AfficheurFlux fluxSortie = new AfficheurFlux(pb.getInputStream());
                //AfficheurFlux fluxErreur = new AfficheurFlux(pb.getErrorStream());
                new Thread(fluxSortie).start();
                new Thread(fluxErreur).start();*/
    new Thread() {
    	public void run() {
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(pb.getInputStream()));
    			String line = "";
    			try {
    				while((line = reader.readLine()) != null) {
    					// Traitement du flux de sortie de l'application si besoin est
                                        jTextArea1.append(line);
    				}
    			} finally {
    				reader.close();
    			}
    		} catch(IOException ioe) {
    			ioe.printStackTrace();
    		}
    	}
    }.start();
     
    new Thread() {
    	public void run() {
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(pb.getErrorStream()));
    			String line = "";
    			try {
    				while((line = reader.readLine()) != null) {
    					// Traitement du flux d'erreur de l'application si besoin est
                                        jTextArea2.append(line);
    				}
    			} finally {
    				reader.close();
    			}
    		} catch(IOException ioe) {
    			ioe.printStackTrace();
    		}
    	}
    }.start();
                int exitVal = pb.waitFor();
                if(exitVal != 0) jTextArea2.append("ERREUR");
     
                jTextArea1.append("finir");
     
     
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        jTextArea1.append("\nFin du programme\n");
        }

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    1) tu fais un appel à waitFor depuis ton event -> tu givre l'interface jusqu'à la fin du processus. Il faut gérer le processus dans un thread à part.
    2) dans les thread séparés tu fais des appels à JTextArea.setText(). Là c'est l'erreur inverse, les modification des composant graphique ne doivent avoir lieur QUE sur le thread graphique (EDT)

  12. #12
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut
    Bonjour,

    J'aimerais si si peut bien éclaircir le deuxième point si c'est possible

  13. #13
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

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

Discussions similaires

  1. [RegEx] Récupération d'une adresse e-mail entre parenthèses
    Par bruntho dans le forum Langage
    Réponses: 2
    Dernier message: 10/11/2010, 19h54
  2. Réponses: 5
    Dernier message: 29/06/2009, 17h11
  3. Récupération d'une adresse mac
    Par ouss dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/04/2009, 11h00
  4. Récupération d'une adresse IP en C
    Par ptit_riton dans le forum Linux
    Réponses: 2
    Dernier message: 29/12/2008, 00h20
  5. Réponses: 6
    Dernier message: 28/02/2006, 18h41

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