Ver endereço IP

21 respostas
F

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

P

http://www.whereismyip.com/

F

Eu quero saber em JAVA !!

P

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

F

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

P

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:
F

Esse código naum funcionou !

Lançou uma SocketExeception : Connection Reset

=/

P

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:

D

Caro peczenyj!

Estou a dias procurando este código.

Funcionou certinho… Valeu!!! :smiley:

F

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.

P

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.

F

Brigadaum ^^

R
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;
    }
    
}
F

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

Obrigado

P

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)

F

brigadaum

J

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

}

G

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.

M

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