Operações com IP

Senhores

Gostaria de um help para acrescentar um número de “host” a um número IP. Exemplo:

Para o IP 192.168.1.0 com uma máscara de subrede /30 s (a máscara de subrede 255.255.255.252 acima). Essa rede ficaria assim:

192.168.1.0: Rede
192.168.1.1: Um dos hosts usáveis
192.168.1.2: Um dos hosts usáveis
192.168.1.3: Broadcast

ou seja, 192.168.1.0 + 4 !!! Aqui está o problema

Please somebody help me!

[quote=robinsonbsilva]Senhores

Gostaria de um help para acrescentar um número de “host” a um número IP. Exemplo:

Para o IP 192.168.1.0 com uma máscara de subrede /30 s (a máscara de subrede 255.255.255.252 acima). Essa rede ficaria assim:

192.168.1.0: Rede
192.168.1.1: Um dos hosts usáveis
192.168.1.2: Um dos hosts usáveis
192.168.1.3: Broadcast

ou seja, 192.168.1.0 + 4 !!! Aqui está o problema

[/quote]

Eu não entendi o que vc quer fazer, mas acho que o ponto de partida é saber que IP não numeros e que numeros são binários

dê uma olhada aqui a ver se ajuda em alguma coisa

Então, deixe me ser claro…rs!
Terei que desenvolver uma aplicação para armazenar os Ranges de Ips dos clientes, e para calcular tal range
é necessário fazer um cálculo com o IP fornecido e Máscara, assim chegaremos ao número de hosts…dai seria necessário somar esses número de hosts ao ip…

     255           255          255           255 -> Decimal

11111111 11111111 11111111 11111111 -> Binario

    189               8               0              0  ->IP

11111111 11111111 11000000 00000000 ->Mascara /18

189.8.0.0 /18 -> Range de IP igual 189.8.0.1 to 189.8.63.254 /Max Host(16382)

alguma sugestão de como codificar isso (189.8.0.0 + 16382)??

Obrigado pela atenção!

[quote=robinsonbsilva]Então, deixe me ser claro…rs!
Terei que desenvolver uma aplicação para armazenar os Ranges de Ips dos clientes, e para calcular tal range
é necessário fazer um cálculo com o IP fornecido e Máscara, assim chegaremos ao número de hosts…dai seria necessário somar esses número de hosts ao ip…

     255           255          255           255 -> Decimal

11111111 11111111 11111111 11111111 -> Binario

    189               8               0              0  ->IP

11111111 11111111 11000000 00000000 ->Mascara /18

189.8.0.0 /18 -> Range de IP igual 189.8.0.1 to 189.8.63.254 /Max Host(16382)

alguma sugestão de como codificar isso (189.8.0.0 + 16382)??

Obrigado pela atenção![/quote]

Veja que a mascara retira um conjunto de octetos. Os que sobram são o numero máximo de hosts.
Vc tem que:

  1. converter a string do ip para um binário ( um long, ou um objeto que manipule Bit a bit como o BitSet)
  2. converter a mascara para um binario
  3. usar operadores binários para aplicar a mascara. O resultado será um numero que é o maximo de hosts.
  4. pegando no primeiro ip e somando 1 a cada iteração até chegar no numero máximo vc tem os ips possiveis.

eu acho que seria isto, mas não tenho a certeza

i

Mas como vc vai receber as informações???

Algo do tipo: 172.16.1.0/20 ???
ou 172.16.1.22 /20???
ou ainda 172.16.1.22 255.255.252.0

???

Opa… axu q entendi o que vc quer…

Somente com a mascara já é possivel saber a qtd de hosts possiveis na rede.

ex: /30 = 2
/29 = 6
/28 = 14
/27 = 30
/26 = 62
/25 = 126
/24 = 256
/23 = 510
Obs: estou desconsiderando o endereço da rede e o de broadcast, s efor necessário é só somar mais 2 em cada range

etc…

Ai é só vc somar os valores na sua rede.