Calcular o Range de IPs

Programa de Redes II em JAVA.

Entrar com o IP de rede, a mascara e o numero de hosts. Ao final exibir o total de endereços possiveis, o total de subredes possíveis e o range(ou pool) de Ips.

Probleminha interessante.
Mas qual é exatamente sua dúvida? Precisa de ideias para começar?
Fico no aguardo.

Eu estou com o seguinte problema. Eu não sei como somar o total de endereços ao IP de rede.
Ex:
IP 180.48.10.0
mascara 255.255.192.0

como eh q soma 180.48.10.0 + 16384? para encontrar o seguinte resultado: 180.48.63.255 .

Converta IP 180.48.10.0 para um número (no seu caso, 180 * 256 * 256 * 256 + 48 * 256 * 256 + 10 * 256 + 0 = …)
A seguir, pegue esse número e some o valor desejado menos um (16383).

Espero que você saiba voltar o número para trás.

voltar um numero para traz? como é q se faz?

Não acredito!

Pow se vc tá no decimo andar e o cara manda vc voltar mais um , onde deverá ir?

Cara vi seus topicos, está tentando entender codigos alem do seu conhecimento atual.
Uma dica que dou é, estude logica de programação, depois java basico, no site da caelum tem umas apostila otimas.

Bons estudos!

ok… tow precisando mesmo… mas eu nao entendo como volta um numero para tras

:wink:

[code]public class Teste {
public static void main(String[] args) {
String ipString = “180.48.10.0”;
String resultadoIp = “”;
long ip = 0;
long mascara = 0;
long resultado = 0;

	ip = ipToInt(ipString);// converetendo ip para int ou melhor long
	mascara = 16384; // a mascara em long
	resultado = ip + mascara - 1; // esse -1 volta um atraz
	resultadoIp = intToIp(resultado);
	System.out.println("ip:" + ipString);
	System.out.println("ip em long:" + ip);
	System.out.println("mascara:" + mascara);
	System.out.println("resultado ip:" + resultadoIp);
	System.out.println("resultado int" + resultado);
}
public static long ipToInt(String addr) {
	String[] addrArray = addr.split("\\.");
	long num = 0;
	for (int i = 0; i < addrArray.length; i++) {
		int power = 3 - i;
		num += ((Integer.parseInt(addrArray[i]) % 256 * Math
				.pow(256, power)));
	}
	return num;
}
public static String intToIp(long i) {
	return ((i >> 24) & 0xFF) + "." + ((i >> 16) & 0xFF) + "."
			+ ((i >> 8) & 0xFF) + "." + (i & 0xFF);
}

}[/code]

como é que eu faço a operação AND no programa? claro, em caso de entrada de um endereço de host.