Conseguir IP WAN - Java - Swing

Ola Ola!!!
Gente, eu preciso pegar o meu IP toda vez que eu abrir meu aplicativo java que eu fiz.
E eu sei que eu posso usar um site da internet pra fazer isso.
Eu queria saber se isso se chama “Web Service”? E queria saber um site estável e que voces usam, e que seja Free to use.

Vou colocar um try catch pra quando o cliente nao estiver conectado ou se tiver um firewall… mas na verdade, a função é que, quando o admin do meu chat ligar o aplicativo, ele ja mostre o IPV4

:stuck_out_tongue: Alguma Sugestão?

Pedi ajuda para um conhecido, caso alguem precisar, esta aqui uma thread que eu montei em base num método que achei nesse site :

[code]package ProtocolCommunication;

import Controller.MainController;
import java.net.HttpURLConnection;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*

  • @author André Vinícius Lopes
    */
    public class WANAddress implements Runnable {

    private MainController mainController;

    public WANAddress(MainController mc)
    {
    mainController = mc;
    }

    @Override
    public void run() {
    boolean done = false;
    if (done == false) {
    try {
    java.net.URL url = new java.net.URL("??? Precisa de um Script que retorne o IP em um site");

             java.net.HttpURLConnection con = (HttpURLConnection) url.openConnection();
    
             java.io.InputStream stream = con.getInputStream();
    
             java.io.InputStreamReader reader = new java.io.InputStreamReader(stream);
    
             java.io.BufferedReader bReader = new java.io.BufferedReader(reader);
             String ip = bReader.readLine();
             
             //System.out.print("Your IP address is " + ip);
             
             mainController.getMainViewFrontController().showWANAddress(ip);
             done = true;
         } catch (Exception e) {
             e.printStackTrace();
         }
    
     } else {
         try {
             this.finalize();
         } catch (Throwable ex) {
             Logger.getLogger(WANAddress.class.getName()).log(Level.SEVERE, null, ex);
         }
     }
    

    }
    }
    [/code]