Definir se um PC está na LAN usando Java

2

Estou procurando um método para determinar se um PC (cujo endereço IP eu sei) está ou não conectado à LAN. Tentei perguntar a máscara de sub-rede de ambos e comparar cada bit de endereço IP, mas estou perguntando se há uma maneira melhor e mais direta de fazer isso. Desculpe pelo meu inglês ruim: S

Wallkan
fonte
11
O que poderia ser mais direto do que procurar se os dois IPs dentro da mesma sub-rede?
Victor Sorokin
11
Ah, você quer saber se os dois computadores (o seu e o outro) estão na mesma sub-rede, em conexão direta, sem passar por um roteador?
Woliveirajr
Talvez meus princípios básicos de rede estejam um pouco enferrujados, mas o que estar na mesma sub-rede ou não tem a ver com ter uma conexão LAN? De qualquer forma, se você quiser verificar se eles estão na mesma sub-rede, então sim, verificar máscaras de sub-rede é obviamente o caminho a seguir.
Voo
Nem todos os IPs na sua LAN terão a mesma máscara de sub-rede, pelo menos quando falamos de grandes empresas e infraestrutura de roteamento complexa. Não consigo pensar em apenas uma solução:. Manter uma lista branca (por exemplo, um arquivo) que contém o endereço IP varia você estiver interessado em
Gostaria de saber se podemos estar perdendo a imagem maior aqui. Por que você deseja saber se há uma conexão LAN direta? Talvez exista uma verificação / informação alternativa que atenda ao mesmo objetivo.
Andrzej Doyle

Respostas:

1

É difícil obter uma boa resposta se você não está definindo claramente o problema: como você sabe se eles estão na mesma LAN? Mesmo switch, mesma sub-rede, mesmo edifício físico?

A verificação de sub-rede deve funcionar na maioria das situações.

Outra abordagem (se os dois PCs estiverem "conversando" entre si) é verificar a tabela ARP para verificar se o IP existe: arp -ano prompt de comando. Isso significa que você possui conectividade da camada 2.

Vlad
fonte