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 :

Erreur écouteur port


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 81
    Points : 31
    Points
    31
    Par défaut Erreur écouteur port
    j'ai un code de écouteur de port le suivant :

    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    /*
     * Importation des pakages 
     */
     
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.text.*;
    import java.awt.Toolkit;
     
     
    /*
     * Classe principale du programme
     */ 
    public class PortListener extends Frame
    implements ActionListener  {
     
     
      // Définition des labels
      Label attaque= new Label("Dernière attaque :");
      Label derreur= new Label("Dernier message du système :");
      Label ip= new Label("");
      Label erreur= new Label("");
     
     
     
     
    public PortListener() {
    /*
     * Constructeur de la class PortListener
     */
     
     
      // Ajoute un écouteur pour la fermeture du prog 
      addWindowListener(new Fermeture()); 
     
      // Ajoute le panel
      Panel p=new Panel();
      Panel pbouton=new Panel();
      p.setBackground(Color.white);
      add(BorderLayout.CENTER,p);
      p.setLayout(new GridLayout(5,1));
      // Ajoute le Label "attaque" au panel
      p.add(attaque);
      attaque.setAlignment(Label.CENTER);
      // Ajoute le Label "ip" au panel
      p.add(ip);
      ip.setAlignment(Label.CENTER);
      // Ajoute le Label "derreur" au panel
      p.add(derreur);
      derreur.setAlignment(Label.CENTER);
      // Ajoute le Label "erreur" au panel
      p.add(erreur);
      erreur.setAlignment(Label.CENTER);
      // Change l'icone de la fenètre
      setIconImage(Toolkit.getDefaultToolkit().getImage("jaune.gif"));
     
      //construction du menu
      MenuBar mb=new MenuBar();
      setMenuBar(mb);  
      //menu Fichier
      Menu m1=new Menu("Fichier");
      mb.add(m1);
      //item Quitter
      MenuItem mi=new MenuItem("Quitter");
      mi.setActionCommand("Sortie");
      mi.setShortcut(new MenuShortcut(KeyEvent.VK_Q));
      mi.addActionListener(this);
      m1.add(mi);
      // Menu Edition
      Menu m2=new Menu("Edition");
      mb.add(m2);
      //item Effacer l'historique
      MenuItem me1=new MenuItem("Effacer le fichier de log");
      me1.addActionListener(this);
      m2.add(me1);
      MenuItem me2=new MenuItem("Effacer l'IP de l'écran");
      me2.addActionListener(this);
      m2.add(me2);
     
     
     
    }
     
     
     
    public void actionPerformed(ActionEvent e) {
    /*
     * Gestion des événement du menu
     */
     
       String cheminLog = System.getProperty ("user.dir")+"\\IP_log.rtf";
       File f= new File(cheminLog);
     
          // Pour le menu "Quitter"
          if (e.getActionCommand().equals("Quitter"))
          System.exit(0);
    	  // Pour le raccourci clavier [ctrl]+Q
          else if (e.getActionCommand().equals("Sortie"))
          System.exit(0);
          else if (e.getActionCommand().equals("Effacer le fichier de log"))
          f.delete();
          else if (e.getActionCommand().equals("Effacer l'IP de l'écran"))
          ip.setText("");
          this.setIconImage(Toolkit.getDefaultToolkit().getImage("vert.gif"));
    }
     
     
     
    public static void main(String args[]) {
    /*
     * Méthode main pour le lancement du programme
     */ 
      String conf1="";
      String conf2="";  
      String text;
      SimpleDateFormat formatter;
      Date currentDate;
      ServerSocket serveur; 
      int port=23;
      Fichier log=new Fichier();
     
      // Récupération des données du fichier PortListener.conf
      try {
            FileReader fw = new FileReader(System.getProperty("user.dir")+"\\PortListener.conf");
            BufferedReader input = new BufferedReader(fw);
            conf1=input.readLine();
            conf2=input.readLine();
            input.close();
            } catch(IOException ioe) { }
     
     
     
      // Creatoin de l'objet srv, instance de la classe PortListener
      PortListener srv = new PortListener();
      // Définition de la fenètre
      srv.setSize(600, 130);
      // Définition du titre
      srv.setTitle("Java PortListener  V1.4");
      // Affiche le fenètre
      srv.setVisible(true);
     
     
      // Définition du port
      if (conf2==null) { port = 23; }
      else { port= Integer.parseInt(conf2);  }
     
      // Création de l'objet serveur instalce de ServerSocket
      try {
       serveur=new ServerSocket(port);
       // Envoi du message a le fenètre
       srv.erreur.setText("Ecouteur en place sur le port "+port);
       // Changement de l'icone
       srv.setIconImage(Toolkit.getDefaultToolkit().getImage("vert.gif"));
       // Ecoute les connexion
       while (true) {
        // Création de nouvelles connexions
        Socket s=serveur.accept();
        // Change l'icone de la fenètre pour avertir d'une connection 
        srv.setIconImage(Toolkit.getDefaultToolkit().getImage("rouge.gif"));
        // Emission d'un son
        Toolkit t = Toolkit.getDefaultToolkit();
        t.beep();
        // Création d'un dialogue avec le client
        new Connexion(s,conf1);
        // Formatage de la date et de l'heure
        formatter = new SimpleDateFormat ("EEEEEEEE dd MMMMMMMMMMM yyyy à kk:mm:ss ", Locale.getDefault());
        // Récupération de la date et de l'heure
        currentDate = new Date();
        String lastdate = formatter.format(currentDate);
        // Récupération du nom et de l'ip du client 
        text= ""+s. getInetAddress()+" le "+lastdate+" sur le port : "+port;
        // Affichage du texte comptenant l'ip et le date de connexion du client
        srv.ip.setText(text);
        // Enregistrment de ce texte dans le fichier de log
        log.Log(text);
       } 
      } catch (IOException e) {
       // En cas d'erreur de l'objet serveur
       srv.erreur.setText(""+e.getMessage()+", l'écouteur n'est pas en place");
       }
     }  
     
    }   
     
     
     
     
    class Connexion  {
    /**
     * La classe Connexion crée un dialogue avec le client
     */
     
     // Liaison avec client    
     Socket client;               
     // Envoi du Message
     PrintWriter versClient;      
     
     // Constructeur
     public Connexion(Socket client,String nom) {
      this.client=client;
     
      try {
       // Création des flots vers le client
       versClient=new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);
     
     
       // Message envoyé au client
       versClient.println("----- WARNING  -----------------------------------------------------------");
       versClient.println("This equipment is the property of "+ nom +". Any unauthorised");
       versClient.println("connection attempt is prohibited and will result in criminal prosecution");
       versClient.println("under applicable criminal laws.");
       versClient.println(" ");
       versClient.println("------ ATTENTION ---------------------------------------------------------");
       versClient.println("Cet equipement est la propriete de "+ nom +". Toute tentative d'acces");
       versClient.println("sans autorisation sur cet equipement est interdite et passible d'un an de");
       versClient.println("prison et de 15 244 Euros d'amende (nouveau code penal - article 323-1)");
       versClient.println(" ");
       versClient.println("--------------------------------------------------------------------------");
     
      } catch (IOException e) {
       // En cas d'erreur lors de l'envoi des données vers le client
       try { 
       client.close(); 
       } catch (IOException ee) {}
      }
     }
    }
     
     
    class Fermeture extends WindowAdapter {
      /**
       * Gestion de l'événement Case de fermeture
       */
      public void windowClosing(WindowEvent e) {
       System.exit(0);
      }
    }
     
     
    class Fichier {
      /**
       * Gestion du fichier de log
       */
     
    // Récuperation du chemin du programme et du nom du fichier    
    String cheminLog = System.getProperty ("user.dir")+"\\IP_log.rtf";
     
        public void Log(String text) { 
        /*
         * Méthode pour écrire dans le fichier
         */
     
        try {
        	// Ouverture du fichier en écriture
            FileWriter fw = new FileWriter(cheminLog,true);
            // Création du tampon d'écriture
            BufferedWriter output = new BufferedWriter(fw);
            // Envoi du flot de données et fermeture du fichier
            output.write(text);
            output.write ("\n");
            output.flush();
            output.close();
            } catch(IOException ioe) { }
     
        }
    }

    lors de la compilation j'ai l'erreur suivante:
    Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at PortListener.main(PortListener.java:148)

    SVP comment corrige cette erreur ?

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 797
    Points
    4 797
    Par défaut
    l'erreur est ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      if (conf2==null) { port = 23; }
      else { port= Integer.parseInt(conf2);  }
    si conf2 = ""
    alors if (conf2==null) va donner faux
    il ne faut pas confondre un objet String null et une chaîne de caractères vide

    conf2 peut contenir n'importe quoi donc
    je pense qu'il faut encadrer port= Integer.parseInt(conf2);
    avec un try / catch
    si une erreur se déclenche c'est qu'on ne peut pas parser conf2 en Integer
    donc dans la section catch, on place port = 23;
    comme ça le port est renseigné quelque soit l'erreur.

    Maintenant en fonction des besoins de l'application il faudra éventuellement être plus subtil
    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 à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Modifie la ligne 148 par celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      else { System.out.println("conf2=" + conf2);port= Integer.parseInt(conf2);  }
    Conf2 n'est pas "typé" entier.
    Il doit avoir un espace qui traine par exemple.

    Vérifie dans ton fichier conf

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 81
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Tazz54oli Voir le message
    Modifie la ligne 148 par celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      else { System.out.println("conf2=" + conf2);port= Integer.parseInt(conf2);  }
    Conf2 n'est pas "typé" entier.
    Il doit avoir un espace qui traine par exemple.

    Vérifie dans ton fichier conf
    le prb n'est pas corrigé
    aussi ça marche sur le port 23 seulement . comment je fais pour que ce code marche sur tous les ports ?

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    Tout simplement en ne mettant pas conf2 à null ou simplement vide pour que parseInt ne se plaigne pas.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 797
    Points
    4 797
    Par défaut
    Tazz54oli ne voulait pas corriger ton code
    mais afficher le contenu de conf2 pour que tu corriges le fichier de configuration.

    Cependant l'erreur est connue.
    conf2 contient une chaîne vide à savoir : ""
    et donc il n'est pas possible de le transformer en Integer

    remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      if (conf2==null) { port = 23; }
      else { port= Integer.parseInt(conf2);  }
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try {
        port= Integer.parseInt(conf2);
    } catch (Exception e) {
        port = 23;
    }
    ça marchera mais c'est un peu bourin parce qu'on ne cherche pas pourquoi conf2 n'est pas bon
    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/

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 81
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Tazz54oli ne voulait pas corriger ton code
    mais afficher le contenu de conf2 pour que tu corriges le fichier de configuration.

    Cependant l'erreur est connue.
    conf2 contient une chaîne vide à savoir : ""
    et donc il n'est pas possible de le transformer en Integer

    remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      if (conf2==null) { port = 23; }
      else { port= Integer.parseInt(conf2);  }
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try {
        port= Integer.parseInt(conf2);
    } catch (Exception e) {
        port = 23;
    }
    ça marchera mais c'est un peu bourin parce qu'on ne cherche pas pourquoi conf2 n'est pas bon
    oui c'est à cause de conf2 le prb. dans mon cas, je veux faire le test sur n'importe quel ports, svp comment faire ?

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    Je répète :

    Citation Envoyé par wax78 Voir le message
    Tout simplement en ne mettant pas conf2 à null ou simplement vide pour que parseInt ne se plaigne pas.
    Ensuite, que ca soit 23, 42, 1024 ou un autre chiffre ca ne posera pas plus de problèmes...

    donc si conf2 == null ou que conf2.lenght()==0 alors c'est impossible que parseint fonctionne, c'est quand même pas compliqué...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 797
    Points
    4 797
    Par défaut
    Il faut mettre le bout de code que je t'ai indiqué
    dans une méthode qui sera appelée chaque fois que tu veux initialiser un port.

    tu passes à la méthode 2 paramètres :
    String conf qui sera la valeur String du port à convertir en Integer
    Integer default qui sera la valeur à utiliser si le parse de conf échoue
    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/

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 81
    Points : 31
    Points
    31
    Par défaut
    vous m'avez pas compris , on suppose que j'ai pas le fichier conf et je ne veut pas utiliser par défaut le port 23. mais je veut que l'application détecte automatiquement le port sur le quel l'attaque est réalisée et sans initialisation !!

  11. #11
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    Ok, maintenant ça me semble plus claire.

    Par contre quand tu dis :

    L'attaque est réalisée ?
    Tu espères faire un détecteur de connections qui va écouter sur les 65536 port possibles afin de voir si quelqu'un s'y connecte ? (sachant que certains port seront déjà pas ouvrable car déjà ouverts).

    Sinon l'application ne va pas sucer de son pouce qu'elle doit utiliser tel ou tel port ca c'est certain
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 81
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Ok, maintenant ça me semble plus claire.

    Par contre quand tu dis :



    Tu espères faire un détecteur de connections qui va écouter sur les 65536 port possibles afin de voir si quelqu'un s'y connecte ? (sachant que certains port seront déjà pas ouvrable car déjà ouverts).

    Sinon l'application ne va pas sucer de son pouce qu'elle doit utiliser tel ou tel port ca c'est certain
    ouiii c'est ça , on fait l'écoute sur tous les ports. pouvez-vous m'aider ?!!

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Essaye de comprendre le code que tu reprends déjà.

    Après, tu n'as qu'à executer le logiciel autant de fois qu'il y a de ports

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 81
    Points : 31
    Points
    31
    Par défaut

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/01/2011, 10h16
  2. Erreur communication port
    Par maxpog23 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/05/2010, 17h09
  3. Projets Web: Erreur de port sous 2005
    Par Médinoc dans le forum Visual Studio
    Réponses: 0
    Dernier message: 11/02/2009, 12h44
  4. erreur fichier ports COM
    Par _yeye_ dans le forum Visual C++
    Réponses: 3
    Dernier message: 27/09/2006, 08h16

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