Ver endereço IP

21 respostas
Foxlol

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.

21 Respostas

peczenyj

http://www.whereismyip.com/

Foxlol

Eu quero saber em JAVA !!

peczenyj

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

Foxlol

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

peczenyj

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

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();
			}

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

Esse código naum funcionou !

Lançou uma SocketExeception : Connection Reset

=/

peczenyj

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:

drix

Caro peczenyj!

Estou a dias procurando este código.

Funcionou certinho… Valeu!!! :smiley:

Foxlol

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.

peczenyj

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.

Foxlol

Brigadaum ^^

rafaelbrizola
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());				

}
D

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;
    }
    
}
Foxlol

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

Obrigado

peczenyj

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

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

D

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

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

Foxlol

brigadaum

javaAurelio

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();
	}
}

}

GiancarloBraga

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.

MarcolaLipe10

Nossa… Confusão , consegui usando isso …

System.out.println(InetAddress.getLocalHost().getHostAddress());
R

em php isto é bem simples, é praticamente um comando só, mas acho que não é o caso, ou necessidade web …

Criado 25 de junho de 2006
Ultima resposta 18 de mar. de 2014
Respostas 21
Participantes 9