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érer adresse IP avec getByName() avec la classe InetAddress


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut Récupérer adresse IP avec getByName() avec la classe InetAddress
    Bonjour

    J'ai réseau ou il y a deux ordinateur connectés en ethernet, je voudrais récupérer l'adresse IP de l'autre ordi. Je récupère bien une adresse IP mais ce n'est pas la bonne et ne correspond pas non plus à l'adresse de la carte WI-FI.
    je vous met la partie de code que j'ai utilisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String nom = String.valueOf("Julie".hashcode());
    InetAddress adresseserveur = InetAddress.getByName(nom);
    System.out.println(adresseserveur.getHostAddress());
    j'ai essayée en mettant un nom aléatoire au lieu de Julie, Le programme ne fait rien. Ça montre bien qu'il récupère l'adresse de l'autre ordinateur, j'ai aussi essayer en mettant le propre nom de l'ordi ( comme si je faisais un getLocalHost() et il me renvoie aussi une adresse IP qui ne correspond a rien et qui est bien sur différente du getLocalHost();.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est quoi çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String nom = String.valueOf("Julie".hashcode());

    a++

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut
    cette ligne sert a mettre "julie" en ascii. quand je mettais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InetAddress adresseserveur = InetAddress.getByName("julie");
    le programme ne faisait rien, je me suis donc dit q'il faut mettre en ascii et avec cette ligne il trouve l'autre ordinateur apparament

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par transistor59 Voir le message
    cette ligne sert a mettre "julie" en ascii.
    Non.
    Cela génère un hashcode qui n'a rien à voir avec la valeur ascii de la chaine...


    a++

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut
    j'ai trouvé ça le forum "comment ça marche"

    j'ai changé le code pour obtenir le code ascii
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String serveur = "Julie";
    StringBuilder sb= new StringBuilder();
    for (int i= 0; i < string.length(); i++)
       sb.append((int)string.charAt(i));
    String nom = String.valueOf(sb);
    InetAddress adresseserveur = InetAddress.getByName(nom);
    mais la le programme ne fait rien

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ton code, en dehors du fait qu'il ne doit pas compiler, parcourt les caractères de la chaîne, les transformes en int, les concatène. Donc ta chaîne à la fin vaut "74117108105101" ! Ce que tu aurais pu savoir en affichant cette chaîne...


    Une chaîne en java n'a pas d'encodage : on peut obtenir à partir d'une chaîne un tableau d'octets dans un encodage donné, comme l'US-ASCII, par la méthode getBytes(encodage).

    Quant à la méthode getByName() de INetAdress, elle prend une chaîne en paramètre. Il n'y a pas à se préoccuper de l'encodage, juste que le nom qu'on passe est bien un nom de host existant, comme www.developpez.net, ou une adresse ip, sous forme de chaîne.

    L'exemple que tu as trouvé sur "comment ça marche" était un peu absurde, car non expliqué. Si "A".hashCode() donne effectivement 65 (qui est, certe, la même valeur que le code ascii de A), c'est juste presque un hasard. En tout cas, on ne doit pas compter dessus. Et, surtout, on ne peut pas en conclure qu'on peut utiliser cette bidouille étendu à plusieurs caractères, d'autant plus que le hascode est un int. La méthode hashcode() donne le hashcode d'une instance et il se trouve que pour une chaîne, celui-ci est déterminé comme une combinaison des valeurs des caractères de la chaîne (voir le code de la méthode pour le détail de cette combinaison si ça t'intéresse) et que lorsque cette chaîne a un seul caractère, le hashcode est la valeur de ce caractère (exactement 31 * 0 + valeurDuCaractere). Quant à l'encodage utilisé pour représenter les caractères sous forme de valeur (char) en interne, c'est de l'UTF-16, mais on ne devrait pas s'en préoccuper. On se préoccupe de l'encodage uniquement lors d'un traitement externe, comme un stockage dans un fichier, par exemple.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    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
    Je sais pas où t'as trouvé ça, mais ça fait n'importe quoi ton code


    la méthode getByName, comme son nom l'indique, doit prendre le nom de la machine. Le nom d'un machine c'est un truc du genre

    www.developpez.net

    Si tu es en réseau interne, tu dois disposer d'un serveur DNS où sont enregistrées les machines et les IPs. Sans ça, pas question d'utiliser getByName. Si la méthode que tu utiliser sort "quelque chose", c'est parce que tu lui passe un String contenant un nombre, et qu'il prend ça pour un IPv6, si t'as la chance d'avoir un nombre qui ressemblait à quelquechose dans ipv6!

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2008, 11h23
  2. Récupérer adresse IP client avec Internet Explorer
    Par samyrentier dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/03/2006, 17h41
  3. Affichage de l'adresse d'une chaine avec cout
    Par thierryguilbert dans le forum SL & STL
    Réponses: 4
    Dernier message: 14/03/2005, 17h04
  4. execution d'un prog avec des fichiers multi-class
    Par Ice-B dans le forum Général Java
    Réponses: 2
    Dernier message: 05/08/2004, 12h43

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