Ver endereço IP

Galera como faço UM CÓDIGO JAVA para ver o IP do meu computador(retornar uma String por exemplo). O da internet. Pq achei soh um exemplo que pega o da máquina. :?

Mto obrigado.

http://www.whereismyip.com/

Eu quero saber em JAVA !!

Pra vc ver, eu isso nos meus programas JAVA e descubro o meu ip facil facil :wink:

Traduza plz …

E se naum for pra ajudar naum venha aloprar dando uma de bonzão.

Se vc eh bom d+ pra me explicar não precisa nem entrar aqui !

Obrigado

Based Upon
http://www.guj.com.br/java.tutorial.artigo.5.1.guj

[code]import java.net.URL;
import java.net.HttpURLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.StringBuffer;
import java.net.MalformedURLException;
import java.io.IOException;

public class A{
public static void main(String [] args) {

    	String urlString = "http://www.whatismyip.org";

		try{
    		URL url = new URL(urlString);
			HttpURLConnection con = (HttpURLConnection) url.openConnection();

			// seta o metodo
			con.setRequestProperty("Request-Method",    "GET");

			// seta a variavel para ler o resultado
			con.setDoInput(true);
			con.setDoOutput(false);

			// abre a conexão pra input
			BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));

			// le ate o final
			StringBuffer newData = new StringBuffer(10000);
			String s = "";
			while (null != ((s = br.readLine()))) {
				newData.append(s);
			}
			br.close();

			// imprime o codigo resultante
			System.out.println(new String(newData));

			// imprime o numero do resultado
			System.out.println(
				"Resultado: "
					+ con.getResponseCode()
					+ "/"
					+ con.getResponseMessage());

    	}catch(MalformedURLException me){
			me.printStackTrace();
		}catch(IOException ioe){
			ioe.printStackTrace();
		}

	}

}[/code]

[quote] Se vc eh bom d+ pra me explicar não precisa nem entrar aqui ! [/quote] :twisted:

Esse código naum funcionou !

Lançou uma SocketExeception : Connection Reset

=/

depois de definir a urlString coloque:

System.setProperty("http.proxyHost", "ip.do.seu.proxy"); System.setProperty("http.proxyPort", "porta_do_proxy");

Senão… boa sorte… :wink:

Caro peczenyj!

Estou a dias procurando este código.

Funcionou certinho… Valeu!!! :smiley:

Ae funcionou, obrigado !

Teria jeito de fazer isso usando a classe INET ? Eu achei um exemplo mas não funcionou. Só pega o ip local.

vc vai precisar acessar uma das suas interfaces de rede (sim vc pode ter mais de uma), geralmente se faz usando programas do sistema operacional como ifconfig ou algo assim.

Brigadaum ^^

isso aki lista todas as suas interfaces de rede e respectivos ips:
Enumeration e;
e = NetworkInterface.getNetworkInterfaces();
while (e.hasMoreElements()) {
System.out.println(e.nextElement());
}

Fiz uma classe simples pra pegar o endereço. pra pegar o endereço usado na Internet use o método busqueEnderecoInternet();

/*
 * LocalizadorDeRede.java
 *
 * Created on 3 de Julho de 2006, 10:46
 *
 */

package ipserver.logica;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

/**
 * Classe que procura os Endereços IPV4 nas Interfaces locais da máquina
 * @author daniel
 */
public class LocalizadorDeRede {
    
    /**
     * Cria uma nova Instancia de LocalizadorDeRede
     */
    public LocalizadorDeRede() {
    }
    
    
    /**
     * Pesquisa um endereço IPV4 em uma determinada interface de rede
     * @param iface Interface que deve ser procurado (eth0, eth1, etc)
     * @return Endereço IPV4 ou Null se não encontrado nenhum
     */
    public InetAddress busqueEndereco(String iface) {
        InetAddress add = null;
        try {
            NetworkInterface placa = NetworkInterface.getByName(iface);
            add = this.recupereEnderecoIpv4(placa);
        }
        catch (SocketException e) {
            System.out.println(e.getMessage());
        }
        return add;
    }
    
    /**
     * Pesquisa um endereço IPV4 válido na Internet em todas as interfaces de rede.
     * Será retornado o primeiro endereço encontrado
     * @return Endereço IPV4 ou Null se não encontrado nenhum
     */
    public InetAddress busqueEnderecoInternet() {
        InetAddress add = null;
        try {
            Enumeration e = NetworkInterface.getNetworkInterfaces();
            NetworkInterface ifaceAtual = null;
            InetAddress addAtual = null;
            while (e.hasMoreElements()) {
                ifaceAtual = (NetworkInterface)e.nextElement();
                addAtual = this.recupereEnderecoIpv4(ifaceAtual);
                if (addAtual != null) {
                    if (!addAtual.isSiteLocalAddress() && !addAtual.isLoopbackAddress()) {
                        return addAtual;
                    }
                }
            }
        }
        catch (SocketException e) {
            System.out.println(e.getMessage());
        }        
        return add;
    }
    
    private InetAddress recupereEnderecoIpv4(NetworkInterface net) {
        InetAddress add = null;
        Enumeration e = net.getInetAddresses();
        while (e.hasMoreElements()) {
            try {
                add = (Inet4Address)e.nextElement();
            }
            catch(ClassCastException exception) {}
        }   
        return add;
    }
    
}

E como eu trato o retorno em InetAddress para mostrar em uma String ?

Obrigado

Objetos da classe InetAddress possuem um método chamado getAddress()

http://java.sun.com/j2se/1.4.2/docs/api/java/net/InetAddress.html

O método getHostAddress() retorna uma String represantando o Ip.

(Acho que é isso, não lembro bem)

brigadaum

package JMF;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class TestePorsta {

public static void main(String[] args) {
	try {
		InetAddress net = Inet4Address.getByName("lmr037");

		System.out.println(net.getHostAddress());
		//System.out.println("Nome: " + Inet4Address.getHostAddress());

	} catch (UnknownHostException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}

Nesse tópico do fórum JavaFree.org tem:
http://www.javafree.org/javabb/viewtopic.jbb?t=965

Acho que é o código mais simples que passaram por aqui.