Java como diferenciar tipo de dispositivo a partir do IP, (Computador ou Dispositivo móvel)

Java como saber que tipo de dispositivo esta usar um IP.

Gostaria de saber se existe alguma forma de validar se um IP, pertence a um computador, a um dispositivo móvel, … Isto é diferenciar os tipos do dispositivo a partir do IP.

Obrigado pela atenção

Pelo IP, creio que não seja possível, pois o mesmo apenas representa um endereço.

Não sei se é o caso, mas se você estiver querendo descobrir o tipo de dispositivo através de uma requisição HTTP, você consegue vendo o header User Agent.

1 curtida

Gostaria de saber a partir de uma requisição em socket java. Não sei se é exatamente esse protocol que é usado pelo socket.

Mas a partir do socket não da para ter esse tipo de informação???

Rapaz… acho que dá não. O que é possível é, se o acesso ao socket for numa rede local, procurar o host pelo IP nesta rede local e pegar o nome, e a partir do nome fazer a identificação. Mesmo assim, não acho que seja garantido.

Boa Tarde,
Danielcarvalho555

Pelo IP acredito que não seja possível, pois quando ocorre o acesso , você tera somente o acesso ao ip público do ponto que está realizando o acesso, nesse ip público podemos ter “N” computadores e “N” dispositivos móveis. Mas caso você possa informar, detalhe melhor sua necessidade, pois assim podemos talvez apresentar um novo caminho para você seguir.

att,

1 curtida

O Socket serve apenas para fazer a comunicação. O que é enviado é você quem define.

Se você está programando o socket do cliente (aquele que você que saber se é um computador ou dispositivo móvel), adicione essa informação (o tipo do equipamento) aos dados enviados pelo cliente para o servidor.

Abraço.

1 curtida

Boa Tarde,
robsonapsilva

Antes peço desculpa pelo atraso a resposta
O que preciso fazer é seguinte não estarei a trabalhar com os IPs públicos, serão todos IP de uma rede local.
O problema é o seguinte:
-> 1º Tenho de fazer uma pesquisa na rede local para obter todos os IPs (resolvido)
-> 2º A partir dos IP obtidos preciso identificar o tipo de maquina que o possui (É aqui que resido os problema)

O Socket serve apenas para fazer a comunicação. O que é enviado é você quem define.

Se você está programando o socket do cliente (aquele que você que saber se é um computador ou dispositivo móvel), adicione essa informação (o tipo do equipamento) aos dados enviados pelo cliente para o servidor.

Pensei nessa solução mas não poderá ser aplicado para o meu problema

O IP é só um número usado para roteamento dos pacotes, e não contém a informação do tipo de equipamento a qual pertence. Logo, só com base no IP, não dá para saber o que o equipamento é. Se o cliente não pode te mandar essa informação (que é o que te sugeri e o que os navegadores fazem por exemplo, enviando o user agent), então você está com pouquíssimas opções.

Se os dispositivos usam IP fixo, e tipos diferentes de equipamentos estão em sub-redes diferentes (exemplo: computadores começando com 192.168.10, e outros dispositivos com 192.168.11), então você poderia fazer um filtro nesse sentido. Obviamente, isso é sujeito à falhas e imprecisões.

Abraço.

1 curtida

Boa Tarde
Danielcarvalho555,

Então rapaz nesse caso, eu tbm não estou vendo como controlar isso via ip, assim como o TerraSkilll lhe informou seria via agent ou mascara. Caso essas possibilidades não sejam possíveis a única maneira que me vem a primeiro momento seria uma base de dados para controlar isso. Talvez não seja muito elegante mas resolveria. Poderia funcionar da seguinte forma:

  1. O Client verifica se o dispositivo já tem cadastro com na base de dados, caso não tenha você pega essas informações via S.O e cadastra;

  2. Para manter atualizado o ip em relação com o dispositivo na base você pode criar uma task que roda de hora em hora para consultar o ip do dispositivo no banco com o do S.O caso estejam diferentes você atualizada o banco de dados.

att,

Boa tarde a todos

De acordo com a ultima resposta que recebi do robsonapsilva fiquei com com relação ao S.O.
Não sei se o S.O que referes aqui é o Sistema Operativo ou outra coisa.

Mas caso seja o Sistema Operativo isso significa que teria de ter alguma aplicação client em todos os hosts conectado a rede, enviado o IP e o seu respectivo tipo de tempo em tempo para a base de dados.

Se for isso, resolveria mas não aplicaria a minha situação.

Imagina agora eu querendo esse tipo de informação numa ponto de acesso publico onde as pessoas livremente podem se conectar a rede. Com certeza muitas das pessoas que conectaram a essa rede não terá a minha aplicação cliente instalado na sua maquina de maneira atualizar a base de dados de tempo em tempo.

OK, isso resolveria o problema caso for numa rede interna fechado a senha onde todos os host que pedem conectar-la seriam conhecidos por mim.

Obrigado.