eu pretendo colocar no meu aplicativo um JTextField para que o
usuário insira um número de IP(ele vai ter que digitar os pontos e
tudo)… daí eu gostaria de pegar essa string e validar para ver se
o usuário não escreveu bobeira…
existe função em java que faz isso ?
Porque não usa métodos do servlet para pegar o IP do usuário ao invés de pedir para ele digitar? E se for aplicação desktop você pode pegar de vários modos, um deles com algo tipo ipconfig.
estou trabalhando como estagiário na programação de um jogo multiplayer
no servidor preciso configurar o IP do session host que fará
a ligação entre o servidor e o cliente… como pode existir
muitos session hosts, eu gostaria de poder digitar o ip do session host
para informar ao servidor onde o session host está
Agora que você explicou posso responder com mais certeza: a menos que seus clientes estejam atrás de um proxy não é necessário pedir que digitem o endereço IP. Você pode obter isto com facilidade usando o método getRemoteAddr da classe ServletRequest e armazenar esta informação no objeto session.
Atrás de proxies o negócio fica mais difícil, as vezes quase impossível. Alguns proxies completam o request com um header tipo “X-Forwarded” ou “X-Forward-IP” ou algo similar. Este header contém o IP “real”. Já se o cara estiver atrás de um proxy anônimo então babau. só perguntando mesmo e ele vai responder qq coisa menos o IP dele.
Bom, deixa eu tentar tambem, preferiria criar uma regex mais simples como:
Pattern pattern = Pattern.compile("(\d{1,3}\.){3}\d{1,3}");
E se passar por ela usar o split para validar cada seguimento. No mais, se sua aplicação desktop vai pegar o endereço do host do cliente, o java.net.InetAddress resolve pra vc. Dá uma olhada nas docs.
Humm gostei da forma q o ganza fez…mas pow é via TextField a passagem de parâmetros né?Não fica as vezes mais fácil fazer um JFormattedTextField e receber cada pedacinho da máscara como uma stringzinha a ser tratada? (aí o primeiro exemplo do Philip seria o mais simples e tranquilo de se fazer!)
fiz um método estático que me serviu. Espero que ajude vocês.
/**
* Verifica se um endereço IP é válido
* @param ipAddress String contendo o endereço IP a ser testado
* @return TRUE caso o IP seja válido e FALSE caso seja inválido
*/
public static boolean isEnderecoIpValido(String ipAddress) {
//Checa se o comprimento da string é menor que 6 e maior que 15
//Minimo 1.1.1.1 Máximo 255.255.255.255
if (ipAddress.length()<6 || ipAddress.length()>15) {
return false;
}
//Quebrando a string em array pelo símbolo . deve ser gerado um array
//com 4 itens
String[] itens = ipAddress.split(".");
if (itens.length != 4) {
return false;
}
boolean retorno = true;
try {
for (String item: itens) {
if (Integer.parseInt(item)<1 || Integer.parseInt(item)>255) {
retorno = false;
}
}
//Exception capsulada pois o objetivo do método é só testar o endereço
} catch (NumberFormatException ex) {
retorno = false;
}
return retorno;
}