Como pegar o IP do modem em Java? A String ipOndeEstou precisa me retornar o IP do modem e não o local.
public static void main(String[] args) {
try{
String ipOndeEstou = java.net.InetAddress.getLocalHost().getHostAddress(); //Quero o IP externo que chegou no modem.
String ipAdministrativo = java.net.InetAddress.getByName("administrativo.teste.br").getHostAddress();
String ipAcademico = java.net.InetAddress.getByName("academico.teste.br").getHostAddress();
System.out.println(ipOndeEstou);
System.out.println(ipAdministrativo);
System.out.println(ipAcademico);
}catch(Exception ex){
}
}
Output:
192.168.99.186 // Eu não quero esse IP. Quero o IP externo que chegou no modem.
177.220.175.162
177.220.175.113
Você não vai conseguir obter o IP externo do modem através do InetAddress.
Sugiro que use a classe URL para acessar algum serviço que retorne o seu IP externo.
Exemplo:
URL whatismyip = new URL("http://checkip.amazonaws.com");
BufferedReader in = new BufferedReader(new InputStreamReader(whatismyip.openStream()));
String ip = in.readLine();
System.out.println(ip);
1 curtida
O problema é que se eu fizer assim, o ip que retornar é o do servidor onde minha aplicação Java Web está rodando.
O que preciso é do IP do modem do cliente que tá acessando o sistema.
Como eu poderia fazer?
Tá mas você postou um código com método main
, o que caracteriza uma aplicação desktop e não web.
Se você tem uma aplicação web, você pode obter o IP de quem acessou seu serviço através do método getRemoteAddr()
da classe HttpServletRequest
.
1 curtida
Estava somente testando com o main, mas já deu certo com o getRemoteAddr() da classe HttpServletRequest na aplicação Web… Obrigado!
1 curtida
Cara não sei se te ajuda…
Uso assim no JSF… funciona…
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) fc.getExternalContext().getRequest();
String ip = request.getRemoteAddr();