Récupérer adresse ip public avec java

ami -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Comment récupérer mon adresse ip public et la enregistrer dans un fichier avec java ?



A voir également:

4 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonne initiative KX, exactement ce que j'avais la flemme de faire :-)
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
irmeche Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   17
 

try { 
   String host = InetAddress.getLocalHost().toString().split("/")[1]; 
   System.out.println(host); 
  } catch (UnknownHostException e) { 
   e.printStackTrace(); 
  } 

0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ne confondrais-tu pas avec l'IP privé ???
0
irmeche Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   17
 
il me retourne l'adresse que je trouve avec ipconfig sur windows

Adresse IPv4. . . . . . . . . . . . . .: 172.20.xxx.xxx
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
irmeche Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   17
 
sinon j'ai trouvé ça:

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

ça donne plus d'informations
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
irmeche Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   17
 
alors montre nous comment faire
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Je l'a dit, en cas de NAT, la machine n'a pas connaissance de l'IP publique.
Un moyen consiste à récupérer le contenu d'un site internet donnant l'IP publique et de parser le résultat.
Le lien suivant montre comment faire : https://www.developpez.net/forums/d256692/java/general-java/recuperer-adresse-ip-public-java/
0
irmeche Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   17
 
merci,
c'est normal que cette adresse publique n'arrête pas de changer, elle n'est pas fixe
sur le site https://www.google.com/search?&gl=us&q=what+is+my+ip+address a chaque fois que tu rafraichis, ça te donne une autre adresse
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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