Forum Programmation.java Analyse d'une adresse IP

Posté par  . Licence CC By‑SA.
Étiquettes :
0
16
fév.
2015

Hello,

Je suis (non développeur) en train de coder, avec un ami, une application en J2EE pour gérer un parc de machine. Dans cette application il est possible de saisir une ou plusieurs adresses IP pour les référencer. Le souci est qu'on peut vite faire une erreur sur l'adresse IP surtout en v6.
Ma question est donc :

Comment vérifier une adresse IPv4 et IPv6 en java ?

Les adresses IP seront saisies dans un "unique" formulaire, pas de découpage par bit ou autre.
Du coup pour la v4 : vérifier le format XXX.XXX.XXX.XXX avec des chiffres compris entre 0-9
pour la v6 : XX:XX:XX etc… là il faut vérifier qu'il y a bien la bonne longueur, le bon nombre de ":" et que tout est compris entre 0-9 et A-F. Pour la v6 on oublie pour l'instant la compression de l'adresse du genre FE80::

Merci d'avance !

Cordialement,
Bobmoutarde

  • # Un petit lien

    Posté par  (site web personnel) . Évalué à 3.

    Qui pourra t'aider : http://rubular.com/

    Si tu ne connais pas encore les regex, c'est le moment de t'y mettre ; la syntaxe est la même avec java, sed, perl…

    Une fois que tu te seras bien amusé avec, tu pourras trouver des regex prêtes à l'emploi, mais c'est plus amusant de sortir le doliprane avant…

  • # InetAddress

    Posté par  (site web personnel) . Évalué à 4.

    Du coup pour la v4 : vérifier le format XXX.XXX.XXX.XXX avec des chiffres compris entre 0-9

    Donc tu considères que 451.788.999.999 est une adresse IPv4 valide ? :)

    Tu peux effectivement utiliser les expressions régulières comme indiqué précédement, tu as un exemple ici http://runnable.com/UvdhwM1iSssNAABm/detect-whether-a-string-is-ipv6-ipv4-or-neither-for-java-and-regex

    Mais le mieux je pense est d'utiliser la function getByName de la classe InetAddress, ton code sera beaucoup plus lisible : https://docs.oracle.com/javase/6/docs/api/java/net/InetAddress.html#getByName%28java.lang.String%29

    Cela permet de vérifier que ta chaine correspond bien à une adresse IPv4/IPv6 ou à un nom de domaine valide.

    • [^] # Re: InetAddress

      Posté par  . Évalué à 1.

      Évidemment j'avais oublié cette condition que les nombres soit compris entre 0 et 255. (c'était trop évident pour moi désolé….)

      Je vais donc explorer les pistes que vous m'avez donné, merci bien.

  • # Facile

    Posté par  . Évalué à 1.

    Comment vérifier une adresse IPv4 et IPv6 en java ?

    En l'essayant…

    Please do not feed the trolls

    • [^] # Re: Facile

      Posté par  . Évalué à 1.

      Pour mettre des commentaires comme ça autant s'abstenir.. Sachant que c'est précisé que c'est pour vérifier le format saisi dans le formulaire.
      Lire les posts entièrement avant de mettre des réponses c'est mieux.

      • [^] # Re: Facile

        Posté par  . Évalué à 2. Dernière modification le 19 février 2015 à 14:42.

        Houla… On se calme ! Je te remercie, j'ai bien lu ton post en entier.

        Tu veux savoir si le truc que te donne l'utilisateur est un écrou de 8, qu'est-ce que tu fais ? tu prend toutes les mesures avec ton pieds à coulisse, tout colle, tu le met dans ta boite à écrou de 8, et finalement, tu veux utiliser ton écrou de 8 et puis… merde… le filetage est dans le mauvais sens, t'avais oublié de vérifier ça.
        La manière la plus sûre de vérifier quelque chose c'est de la soumettre au truc qui va vraiment l'utiliser.

        Bref, c'est de ça dont tu as besoin :

        http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getByName%28java.lang.String%29

        Please do not feed the trolls

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.