Descobrir Ip do Servidor

Boa tarde pessoal estou pesquisei na Web mas sem sucesso, estou querendo descobrir o Ip de uma máquina que está executando um servidor de aplicação na rede, via código Java.
Ou seja numa rede descobrir o Ip da máquina servidor, via código.
É possível fazer isso?

Sua pergunta não foi muito clara. E eu tb não manjo muito do assunto.

Serivor do que WEB ? TCP UDP ?

Se ele é um servidor ele tem compartilhar o ip senão ninguém conecta rsrs

Tem que ver também se ele não esta ‘trabalhando’ somente em LAN

Vlw por responder.
È um servidor Web, rodando uma aplicação web Java, só que eu não quero que o usuário tenha que informar o ip, quero identificar na LAN, uma maquina que esteja executando programa servidor de aplicação com o meu sistema

Não tem como fazer isso em Java?

Juro que até agora não entendi o que você quer fazer.

Você quer fazer um programa que identifique um servidor rodando um sistema? Depois esse programa faria o quê para o usuário não entrar com o IP do servidor?

Outra pergunta: o usuário não deve, em hipótese alguma, saber o IP do servidor que hospeda o sistema?

Pesquisa no google por java ip da maquina, que vem varios resultados sobre como pegar o IP da máquina onde está rodando seu programa.

EDIT: Falei besteira, não tinha entendido direito a pergunta… na verdade continuo sem entender, mas sei que não é isso que eu falei :slight_smile:

[quote=javaimae]Vlw por responder.
È um servidor Web, rodando uma aplicação web Java, só que eu não quero que o usuário tenha que informar o ip, quero identificar na LAN, uma maquina que esteja executando programa servidor de aplicação com o meu sistema[/quote]

Você quer um programa que vasculhe a rede para encontrar um servidor que esteja rodando uma aplicação específica??

Você quer fazer um programa que identifique um servidor rodando um sistema? 

Sim ele vai vasculhar a rede e achar o servidor

Depois esse programa faria o quê para o usuário não entrar com o IP do servidor? 

Ele vai baixar alguns arquivos do servidor, esse meu outro sistema que vai pegar os arquivos do sistema vai ser uma especie de atualizador, o usuário vai executar ele e automaticamente serão baixados arquivos novo/atualizados

Você quer um programa que vasculhe a rede para encontrar um servidor que esteja rodando uma aplicação específica?

É isso ai, uma máquina executando o glassfish com uma aplicação minha

Pesquisa no google por java ip da maquina

Vou pesquisar e ver o que eu consigo

Acho que você deveria pensar muito bem antes de partir para esse tipo de solução!

Acontece que não existe um jeito de fazer isso a não ser tentando em cada host da rede para ver se sua aplicação responde. É uma operação que vai tomar MUUUUUIITOO tempo para ser concluída (se for tentar cada endereço IP possível), e pode também ter algum impacto no tráfego de rede.

É algo que pode ser feito de maneiras melhores, dependendo da situação, de qual problema especificamente vc está tentando resolver.

Por exemplo:

  • Ao invés de pesquisar na rede inteira, o client pode ter uma lista de máquinas onde poderia estar rodando o servidor. Ele procuraria apenas nessa lista.

ou de preferência:

  • Colocar a aplicação client para conectar através de um nome, por exemplo meuservidor.empresa.com . Esse endereço vai ser resolvido via DNS, e você pode atualizar esse DNS sempre que o servidor mudar para um ip diferente.

Eu também acredito que percorrer todos os ips da rede e verificar se a porta do servidor esta aberta não é uma boa solução.( como dito acima )

A não ser que tenha algum comando(prompt windows) que liste as máquinas da rede.

Acho que você poderia pesquisar por ai, tentar fazer primeiro no prompt e depois em java. Deve ter bastante material.

É só uma sujestão, não sou nenhum expert.

Lendo este tópico http://www.guj.com.br/java/250798-algoritimo-para-listar-todos-os-ips-da-rede, pensei em dar um ping no broadcast da rede em determinada porta, (Me corrijam se eu estiver errado) mas os comando de ping tanto por comando do CMD como via Java usam ICMP e mandar os pacotes somente pra uma porta especifica. Então acho que vocês tem razão na tem uma solução elegante para isso