Laço com endereços IP

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.