Récupérer adresse ip public avec java

ami -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Comment récupérer mon adresse ip public et la enregistrer dans un fichier avec java ?

4 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    J'ai repris l'astuce de le y@m's (dans le lien donné par fiddy), de manière à avoir un code plus simple à comprendre (tout est relatif) et surtout directement utilisable.

    import java.net.URL; 
    import java.util.Scanner; 
    
    public class IP 
    {     
        /** 
         * @param site l'adresse internet d'un site donnant l'adresse IP 
         * @param prefixe le code HTML précédant la valeur de l'adresse IP 
         * @param suffixe le code HTML succédant la valeur de l'adresse IP 
         * @return l'adresse IP trouvée ou null sinon 
         */ 
        public static String findIP(String site, String prefixe, String suffixe) throws Exception 
        {         
            Scanner sc = new Scanner(new URL(site).openStream()); 
             
            while (sc.hasNextLine()) 
            { 
                String line = sc.nextLine(); 
                 
                int a = line.indexOf(prefixe); 
                if (a!=-1) 
                { 
                    int b = line.indexOf(suffixe,a); 
                    if (b!=-1) 
                    { 
                        sc.close(); 
                        return line.substring(a+prefixe.length(),b); 
                    } 
                } 
            } 
             
            sc.close(); 
            return null; 
        } 
             
        public static void main(String...args) throws Exception 
        { 
            System.out.println(findIP("https://www.google.com/search?&gl=us&q=what+is+my+ip+address", "<b>IP Address:</b> <span class=\"ha4\">", "</span><br />")); 
        } 
    }
    La confiance n'exclut pas le contrôle
    1
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Bonne initiative KX, exactement ce que j'avais la flemme de faire :-)
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Remarque : ça ira plus vite en privilégiant un site français (plutôt que danois...)

      findIP("http://votreip.free.fr/","<title>IP : ","</title>");
      findIP("http://www.monip.org/","<BR>IP : ","<br>"));
      0
  2. irmeche Messages postés 76 Statut Membre 17
     
    
    try { 
       String host = InetAddress.getLocalHost().toString().split("/")[1]; 
       System.out.println(host); 
      } catch (UnknownHostException e) { 
       e.printStackTrace(); 
      } 
    
    
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Ne confondrais-tu pas avec l'IP privé ???
      0
    2. irmeche Messages postés 76 Statut Membre 17
       
      il me retourne l'adresse que je trouve avec ipconfig sur windows

      Adresse IPv4. . . . . . . . . . . . . .: 172.20.xxx.xxx
      0
    3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Oui, ta fonction donne l'IP locale de ta machine. Si elle est connectée directe à internet, ça sera celle du FAI, mais en cas de NAT, ça ne sera pas la bonne. Cela dépend donc de la configuration.
      0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Cela dépend de ta configuration. Passes-tu par un NAT ? Si c'est le cas, la machine ne connait pas cette adresse. Il faut donc ruser en passant par internet. Tu te connectes sur un site internet te listant l'IP de connection, tu parses l'IP et tu as ta réponse.
    0
  4. irmeche Messages postés 76 Statut Membre 17
     
    sinon j'ai trouvé ça:

    https://java.developpez.com/faq/javaio?page=Reseaux#RESEAU_ip

    ça donne plus d'informations
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Oui, mais le lien que tu donnes n'est pas l'IP publique (sauf en cas de connexion directe à internet), il s'agit de l'IP locale de la machine. Il s'agit de deux notions différentes.
      0
    2. irmeche Messages postés 76 Statut Membre 17
       
      alors montre nous comment faire
      0
    3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Euh non ce n'est pas normal. N'utiliserais-tu pas un logiciel qui change de proxy ? En tout cas, sur un ordinateur classique, cela fonctionne bien (l'IP publique ne change pas à chaque rafraichissement)
      0