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

9 respostas
java
D

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

9 Respostas

L

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.

D

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???

L

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.

R

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,

T

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.

D

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

T

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.

R

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,

D

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.

Criado 10 de agosto de 2016
Ultima resposta 17 de ago. de 2016
Respostas 9
Participantes 4