Récupérer adresse ip public avec java
ami
-
KX Messages postés 19031 Statut Modérateur -
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 ?
Comment récupérer mon adresse ip public et la enregistrer dans un fichier avec java ?
4 réponses
-
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-
-
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>"));
-
-
try { String host = InetAddress.getLocalHost().toString().split("/")[1]; System.out.println(host); } catch (UnknownHostException e) { e.printStackTrace(); } -
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.
-
sinon j'ai trouvé ça:
https://java.developpez.com/faq/javaio?page=Reseaux#RESEAU_ip
ça donne plus d'informations-
-
-
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/ -
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 -
-