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 :

[Reseau]Récupérer l'adresse ip extérieur


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué Avatar de Orionmel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 174
    Points : 185
    Points
    185
    Par défaut [Reseau]Récupérer l'adresse ip extérieur
    Hello world,

    Je souhaiterais récupérer l'adresse Ip d'un client souhaitant se connecter à un serveur.
    J'utilise la méthode Socket.getLocalAddress().getHostAddress()
    Qui me renvoi l'adresse utilisé par le socket utilisé par le serveur.

    Malheuresement cette méthode m'empèche de lancer un client et mon serveur sur un même poste car l'adresse renvoyé est toujours 127.0.0.1. Comment récupérer l'adresse "réélle" de la machine?
    Ex 85.123.21.2

    Merci d'avance.




    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    j'ai cherché a faire ca aussi, et le seul moyen que j'ai trouvé... est d'aller interroger une page PHP qui renvoi l'adresse IP du demandeur ;o)

    si t'as pas de serveur PHP juste pour ca, tu peux utiliser le site web :
    http://whatismyip.com/

    Si tu prefere, cette page est peut etre plus facile a parser ensuite en java :
    http://whatismyhost.com/

  3. #3
    Membre habitué Avatar de Orionmel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 174
    Points : 185
    Points
    185
    Par défaut
    Pas très top quand même comme solution de plus mon tchat doit tourner dans un réseau local...

    Personne n'a mieux?

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    essaye ca alors :

    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
    import java.net.*;
    import java.util.*;
    import java.io.*;
    import java.nio.*;
     
    public class IPAdress {
     
     public void  getInterfaces (){
          try {
             Enumeration e = NetworkInterface.getNetworkInterfaces();
     
             while(e.hasMoreElements()) {
                NetworkInterface netface = (NetworkInterface)
                e.nextElement();
                System.out.println("Net interface: "+netface.getName());
     
                Enumeration e2 = netface.getInetAddresses();
     
                while (e2.hasMoreElements()){
                   InetAddress ip = (InetAddress) e2.nextElement();
                   System.out.println("IP address: "+ip.toString());
                }
             }
          }
          catch (Exception e) {
             System.out.println ("e: " + e);
          }
       }
     
       public static void main(String[] args) {
        IPAdress ip = new IPAdress();
        ip.getInterfaces();
       }
    }
    ca permet de récuperer la liste des IP de toutes les interfaces définies sur ton PC.

    j'ai trouvé ca sur : http://www.rgagnon.com/javadetails/java-0390.html

    Tu peux ensuite parser les résultats pour enlever les adresses "locales" (en 127.*, 169.*, 168.*, 192.*) pour trouver ta vraie adresse (la seule restante en principe)

  5. #5
    Membre habitué Avatar de Orionmel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 174
    Points : 185
    Points
    185
    Par défaut
    C'est quand même étonnant qu'un langage aussi puissant que java ne permet pas de récupérer l'adresse ip à partir d'une fonction assez simple...

    Quoi qu'il en soit merci pour ton code

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Java est puissant, mais dès qu'on s'approche du systeme, le nombre de lignes augmentent considérablement ;o)

    Plus l'objet a abstraire est concret, plus l'abstraction est compliquée...

  7. #7
    Membre habitué Avatar de Orionmel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 174
    Points : 185
    Points
    185
    Par défaut
    Bon j'ai finalement trouvé c'est tout bête, il suffit d'exécuter la commande suivante sur la machine cliente :

    String AdrIp = InetAddress.getLocalHost().getHostAddress();

    Voilou.

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    et le tag [Résolu]... ?

  9. #9
    Membre habitué Avatar de Orionmel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 174
    Points : 185
    Points
    185
    Par défaut
    Citation Envoyé par Fladnag
    essaye ca alors :

    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
    import java.net.*;
    import java.util.*;
    import java.io.*;
    import java.nio.*;
     
    public class IPAdress {
     
     public void  getInterfaces (){
          try {
             Enumeration e = NetworkInterface.getNetworkInterfaces();
     
             while(e.hasMoreElements()) {
                NetworkInterface netface = (NetworkInterface)
                e.nextElement();
                System.out.println("Net interface: "+netface.getName());
     
                Enumeration e2 = netface.getInetAddresses();
     
                while (e2.hasMoreElements()){
                   InetAddress ip = (InetAddress) e2.nextElement();
                   System.out.println("IP address: "+ip.toString());
                }
             }
          }
          catch (Exception e) {
             System.out.println ("e: " + e);
          }
       }
     
       public static void main(String[] args) {
        IPAdress ip = new IPAdress();
        ip.getInterfaces();
       }
    }
    ca permet de récuperer la liste des IP de toutes les interfaces définies sur ton PC.

    j'ai trouvé ca sur : http://www.rgagnon.com/javadetails/java-0390.html

    Tu peux ensuite parser les résultats pour enlever les adresses "locales" (en 127.*, 169.*, 168.*, 192.*) pour trouver ta vraie adresse (la seule restante en principe)
    J'ai un nouveau problème...

    Afin que mon tchat marche sur un pc possédant une carte réseau et un modem adsl, j'ai utilisé ton code pour supprimer l'ensemble des adresses réseaux et récupérer donc uniquement l'adresse extérieur.

    Mais dans ce cas là mon tchat ne marche plus en réseau local o_o !!!!

    Comment puis je résoudre ce problème? Il faudrait qe je récupére soit l'adresse internet dans le cas d'une connexion internet, soit l'adresse réseau dans le cas d'un réseau!

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Il faudrait qe je récupére soit l'adresse internet dans le cas d'une connexion internet, soit l'adresse réseau dans le cas d'un réseau!
    Tu as trouvé la solution toi même...

  11. #11
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    Sinon, tu peux parser le résultat d'un traceroute vers une IP publique.
    Tu passes toutes les IP privées et dès que ton tombe sur une publique, c'est celle-là la bonne.
    Хајде Јано коло да играмо

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

Discussions similaires

  1. [C#] Récupérer son adresse IP sur Internet
    Par Thomas Lebrun dans le forum Windows Forms
    Réponses: 11
    Dernier message: 28/07/2014, 16h19
  2. [Système] Récupérer l'adresse MAC de la machine
    Par la.musaraigne dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 27/01/2011, 14h08
  3. [MFC]récupérer l'adresse MAC
    Par julien20vt dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 11h22
  4. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 14h27
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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