Clase IP
public class IP {
//189.231.254.21
private int octeto1;
private int octeto2;
private int octeto3;
private int octeto4;
public IP(int octeto1, int octeto2, int octeto3,int octeto4) {
this.octeto1 = octeto1;
this.octeto2 = octeto2;
this.octeto3 = octeto3;
this.octeto4 = octeto4;
}
public int getOcteto1() {
return octeto1;
}
public void setOcteto1(int octeto1) {
this.octeto1 = octeto1;
}
public int getOcteto2() {
return octeto2;
}
public void setOcteto2(int octeto2) {
this.octeto2 = octeto2;
}
public int getOcteto3() {
return octeto3;
}
public void setOcteto3(int octeto3) {
this.octeto3 = octeto3;
}
public int getOcteto4() {
return octeto4;
}
public void setOcteto4(int octeto4) {
this.octeto4 = octeto4;
}
/**
* Permite incrementar el ip en una unidad
*
*/
public void incrementar() {
this.octeto4 ++;
if ( octeto4 == 256) {
this.octeto4 = 0;
this.octeto3 ++;
if ( octeto3 == 256) {
this.octeto3 = 0;
this.octeto2 ++;
if ( octeto2 == 256) {
this.octeto2 = 0;
this.octeto3 ++;
if ( octeto1 == 256) {
this.octeto1 = 0;
}
}
}
}
}
/**
* Valida si el ip que le llega es mayor que el ip actual
* @param ip
* @return
*/
public boolean isMenor(IP ip) {
if ( this.octeto1 > ip.getOcteto1() ) {
return false;
}
if ( this.octeto2 > ip.getOcteto2() ) {
return false;
}
if ( this.octeto3 > ip.getOcteto3() ) {
return false;
}
if ( this.octeto4 > ip.getOcteto4() ) {
return false;
}
return true;
}
public String toString() {
return octeto1 + "." + octeto2 + "." + octeto3 + "." + octeto4;
}
}
PortScanner
/**
* Realiza el escaneo de IPS
* @author zeneslev
*/
public class PortScanner {
/**
* Reliza el scan en un desde un IP inicial hasta el IP de fin, buscando en
* un puerto en particular.
* @param inicio
* @param fin
*/
public void scan(IP inicio, IP fin) {
// Inicia la iteración desde el ip inicio hasta el fin
while ( inicio.isMenor(fin)) {
Socket s = new Socket( );
try {
// Realiza la conexión al puerto 8080, esperando 5000 ms para
// el timeout
s.connect(new InetSocketAddress(inicio.toString(),8080) , 5000);
System.out.println(" + " + inicio + " OK ");
inicio.incrementar();
//Cierra el socket
s.close();
} catch (IOException e) {
System.out.println(" - " + inicio + " FALLO " + e.getMessage() );
inicio.incrementar();
}
}
}
/**
* Prueba el código
* @param args
*/
public static void main(String[] args) {
IP inicio = new IP(189,231,254,1);
IP fin = new IP(189,231,254,254);
PortScanner p = new PortScanner();
p.scan(inicio, fin);
}
}