Prezados,
Estou necessitando fazer uma laço repetitivo utilizando uma faixo com protocolo TCP/IP.
Exemplo:
Serão digitados 192.168.0.1 a 192.168.0.3
Fazer uma laço do inicial até o final e então fazer os tratamentos em cada repetição.
Qual a melhor forma para fazer tão situação.
Desde já agradeço.
Olá,
O jeito mais simples de ir enumerando de um IP até outro é:
- Faça um split pelo ponto ("."), assim vai ter quatro octetos. Converta cada um deles para número. Assim, cada IP se transforma em um array de 4 números.
- Some um até chegar ao IP final.
- Sempre que quiser utilizar o IP, converta esse array de volta para string separada por pontos.
Algoritmo para “somar um”:
- Comece pelo último octeto (o da direita), fazendo o seguinte:
— Se for menor que 255, some 1. Fim
— Senão…
— Zere este octeto, e repita o processo para o que está à esquerda.
Como eu disse, essa é a solução mais simples mas não é a mais otimizada. A maneira mais eficiente é converter o IP para binário e trabalhar nesse formato.
Obrigado!
Eu cheguei a pensar nesta solução e era tudo que não queria ouvir…hehehhe!!!
Mas vlw vou partir para isto mesmo…
Outra forma é converter o conjunto de 4 números em um número só, incrementar esse número, e reconverter o número em um conjunto de 4 números.
Por exemplo, 192.168.0.1 = 192 * 256 * 256 * 256 + 168 * 256 * 256 + 0 * 256 + 1 = …
Pegue esse número e incremente,
agora, reconverta o número para um conjunto de 4 bytes, deve dar 192.168.0.2
Para fazer essa conta, alguém aqui no GUJ já deu a resposta um ou dois dias atrás.