ERRO AO PROCURAR O NOME DO COMPUTADOR DA REDE

ELMO01 02/10/2015 12:28:34
#452098
Oi pessoal,

Estou com um problema, estou fazendo um programa que me aparece os IP[ô]s disponíveis da rede, até ai tudo bem que consegui, mas quando peço para listar os nomes destes computadores me retorna o erro [Ô]OS INDICES ESTAVAM FORA DOS LIMITES DA MATRIZ[Ô], como acertar este erro.

Em anexo coloque um programa que faço isto para darem uma olhada e tentarem descobrir aonde estou errando.

Obrigado.










KERPLUNK 02/10/2015 18:45:41
#452122
Resposta escolhida
Ok, vamos lá:
1 - Environment, se refere à máquina local, você não pode usá-lo para tentar descobrir o nome de uma outra máquina na rede, ainda mais por IP. Para fazer isso você deve usar o método Resolve da classe Dns no namespace System.Net
2 - Você está assumindo que toda a rede local, o range de IP é o tradicional 192.168.x.x, é sim o caso da maioria, mas não de todos.
3 - Sinceramente não consigo ver a utilidade do que você está fazendo. Esse tipo de coisa se parece muito com um sniffer.
4 - Várias empresas que têm uma rede local bem configurada, já não utilizam IPv4 tem um bom tempo. Grande parte já está usando IPv6
5 - Nem tudo que se encontra em uma rede é necessariamente um computador, pode ser um switch, um roteador ou alguma outra coisa e nem sempre ele vai ter um nome propriamente.
6 - Se a rede pesquisada possui um DHCP, é muito mais fácil obter esses dados que você quer nele.
ELMO01 02/10/2015 20:34:22
#452126
KERPLUNK em primeiro lugar gostaria de agradecer pela resposta, em segundo lugar lhe por a par do que estou fazendo, é o seguinte, tenho um relógio de ponto informatizado que utiliza o IPV4 como padrão e não o IPV6, além do mais todos os tipos de relógios de ponto de rede utilizam o IPV4, No meu sistema como você viu tenho que descobrir os IP[ô]s válidos para que o operador tenha liberdade de escolher qual o Ip que melhor lhe serve pois isto que fiz é uma pequena parte do programa.

Sei que nem todos utilizam a mesma faixa de IP, por isto fiz uma marreta no sistema para ter parte do IP exemplo IP 192.168.0.XXX, este é uma faixa de IP utilizada por muitas empresas, mas também podemos utilizar o seguinte IP 10.10.0.1, neste caso a faixa de IP mudou ou mesmo o IP 192.168.254.XXX e ai se vai, com a marreta que fiz o sistema me dá somente parte deste IP exemplo 192.168.0. depois faço um FOR NEXT de 1 até 254 onde coloco o [Ô]x[Ô] zerando em até 3 casas.

Quanto ao Environment, já substitui por outros comandos como o GetHostName mas me retornou o mesmo resultado ou resultado não satisfatório, então resolvi pedir ajuda ao FORUM.

Se tiver alguma função e poder me passar com oexemplo ficarei grato.

KERPLUNK 02/10/2015 22:11:05
#452134
Ah sim, agora entendi o que você precisa. Os relógios não podem usar o mesmo DHCP que os demais pontos da rede?
ELMO01 04/10/2015 14:04:42
#452151
KERPLUNK, em algum relógio pode sim utilizar o DHCP e eles sempre ficam ativos, o problema é quando acho um IP que já está sendo utilizado pela rede retorna a mensagem já descrita [Ô]OS ÍNDICES ESTAVAM FORA DOS LIMITES DA MATRIZ[Ô], tenho que saber como faço para que esta mensagem não apareça e colocar o nome do computador que está utilizando.

Obrigado
KERPLUNK 04/10/2015 15:35:48
#452154
Pois é como eu disse, nem tudo vai necessariamente retornar um nome. Depende muito da rede e da configuração da máquina. Você pode tentar enviar um ping com opção -a para o endereço ou ainda System.Net.Dns.Resolve([Ô]endereço IP[Ô]). Mas nunca será garantido que o nome seja retornado.
ELMO01 05/10/2015 12:19:13
#452165
KERPLUNK, tentei colocar a instrução que voce me indicou System.Net.Dns.Resolve([Ô]endereço IP[Ô]), mas o VB me retorna a seguinte mensagem: System.Net.Dns.Resolve() é obsoleto, se tiver mais algum comando ou ideia de como fazer isto, ficarei grato.
Tópico encerrado , respostas não são mais permitidas