Mia_tech
April 19th, 2009, 11:31 PM
I created a class just for the pingsweep method and I made it runnable, so I can update the progress bar... I'm getting errors on the array.... it seems that the array is empty, how could I pass the arrayList from the IPrange class to the IPscanner class... here are the classes, I'm not using a gui for now as I want to get it working before I import into the gui
IPrange class
import java.util.*;
public class IPrange {
private String from = "";
private String to = "";
private int[] ip1 = {0,0,0,0};//holds the numeric ip
private int[] ip2 = {0,0,0,0};
private String ipadd = "";
ArrayList<String> range = new ArrayList<String>();
//setters
public void setFromip(String from)
{
this.from = from;
}
public void setToip(String to)
{
this.to = to;
}
//convert from String ip to int[] ip
public void StrToIP()
{
//spliting strings
String[] temp1 = from.split("\\.");
String[] temp2 = to.split("\\.");
//parsing and adding ip to ip Array
for(int i = 0; i < temp1.length; i++)
{
ip1[i] = Integer.parseInt(temp1[i]);
ip2[i] = Integer.parseInt(temp2[i]);
}
}
/**
* identifying type of network class A, B, C
*/
public void calcNetwork()
{
String addr = "";
//adding class A network to Array "range"
if((ip1[1] != ip2[1]) && ( ip1[1] < ip2[1]))
{
for(int i = ip1[1]; i <= ip2[1]; i++)
{
for(int j = 0; j <= 255; j++)
{
for(int k = 0; k <= 255; k++)
{
addr = ip1[0]+"."+i+"."+j+"."+k;
range.add(addr);
}
}
}
}
//adding class B network to Array "range"
else if((ip1[2] != ip2[2]) && (ip1[2] < ip2[2]))
{
for(int i = ip1[2]; i <= ip2[2]; i++)
{
for(int j = 0; j <= 255; j++)
{
addr = ip1[0]+"."+ip1[1]+"."+i+"."+j;
range.add(addr);
}
}
}
//adding class C network to Array "range"
else if((ip1[3] != ip2[3]) && (ip1[3] < ip2[3]))
{
for(int i = ip1[3]; i <= ip2[3]; i++)
{
addr = ip1[0]+"."+ip1[1]+"."+ip1[2]+"."+i;
range.add(addr);
}
}
else System.out.println("Enter correct address range!");
}
public ArrayList<String> getRange()
{
return range;
}
}
IPscanner class
import java.util.*;
import java.io.*;
import java.net.*;
public class IPscanner implements Runnable{
private String ipadd = "";
IPrange netrange = new IPrange();
ArrayList<String> block;
public IPscanner() throws ExceptionInInitializerError
{
block = netrange.getRange();
}
public void run()
{
boolean ping = false;
System.out.println(block.size());
ipadd = "Scanning network "+"\""+block.get(0)+"\""+"...."+"\n";
for(int i = 0; i < block.size(); i++)
{
try
{
int timeout = 1500;
InetAddress address = InetAddress.getByName(block.get(i));
ping = address.isReachable(timeout);
//progressBar1.setValue(i);//updating progress bar
if(ping == true)
{
ipadd = block.get(i)+" is alive!"+"\n";
}
else
{
ipadd = block.get(i)+"\n";
}
System.out.println(ipadd);
}
catch(IOException e)
{
System.out.println(e);
}
}
}
public String getIPadd()
{
return ipadd;
}
}
main method
public class Main {
public static void main(String[] args) {
IPrange scan = new IPrange();
Runnable r = new IPscanner();
IPscanner ipscan = new IPscanner();
String from = "10.200.50.0";
String to = "10.200.50.10";
scan.setFromip(from);
scan.setToip(to);
scan.StrToIP();
scan.calcNetwork();
Thread t1 = new Thread(r);
t1.start();
System.out.println(ipscan.getIPadd()+" I'm here!");
}
}
errors:
I'm here!
Exception in thread "Thread-0" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at testscan.IPscanner.run(IPscanner.java:27)
at java.lang.Thread.run(Thread.java:619)
BUILD SUCCESSFUL (total time: 0 seconds)
IPrange class
import java.util.*;
public class IPrange {
private String from = "";
private String to = "";
private int[] ip1 = {0,0,0,0};//holds the numeric ip
private int[] ip2 = {0,0,0,0};
private String ipadd = "";
ArrayList<String> range = new ArrayList<String>();
//setters
public void setFromip(String from)
{
this.from = from;
}
public void setToip(String to)
{
this.to = to;
}
//convert from String ip to int[] ip
public void StrToIP()
{
//spliting strings
String[] temp1 = from.split("\\.");
String[] temp2 = to.split("\\.");
//parsing and adding ip to ip Array
for(int i = 0; i < temp1.length; i++)
{
ip1[i] = Integer.parseInt(temp1[i]);
ip2[i] = Integer.parseInt(temp2[i]);
}
}
/**
* identifying type of network class A, B, C
*/
public void calcNetwork()
{
String addr = "";
//adding class A network to Array "range"
if((ip1[1] != ip2[1]) && ( ip1[1] < ip2[1]))
{
for(int i = ip1[1]; i <= ip2[1]; i++)
{
for(int j = 0; j <= 255; j++)
{
for(int k = 0; k <= 255; k++)
{
addr = ip1[0]+"."+i+"."+j+"."+k;
range.add(addr);
}
}
}
}
//adding class B network to Array "range"
else if((ip1[2] != ip2[2]) && (ip1[2] < ip2[2]))
{
for(int i = ip1[2]; i <= ip2[2]; i++)
{
for(int j = 0; j <= 255; j++)
{
addr = ip1[0]+"."+ip1[1]+"."+i+"."+j;
range.add(addr);
}
}
}
//adding class C network to Array "range"
else if((ip1[3] != ip2[3]) && (ip1[3] < ip2[3]))
{
for(int i = ip1[3]; i <= ip2[3]; i++)
{
addr = ip1[0]+"."+ip1[1]+"."+ip1[2]+"."+i;
range.add(addr);
}
}
else System.out.println("Enter correct address range!");
}
public ArrayList<String> getRange()
{
return range;
}
}
IPscanner class
import java.util.*;
import java.io.*;
import java.net.*;
public class IPscanner implements Runnable{
private String ipadd = "";
IPrange netrange = new IPrange();
ArrayList<String> block;
public IPscanner() throws ExceptionInInitializerError
{
block = netrange.getRange();
}
public void run()
{
boolean ping = false;
System.out.println(block.size());
ipadd = "Scanning network "+"\""+block.get(0)+"\""+"...."+"\n";
for(int i = 0; i < block.size(); i++)
{
try
{
int timeout = 1500;
InetAddress address = InetAddress.getByName(block.get(i));
ping = address.isReachable(timeout);
//progressBar1.setValue(i);//updating progress bar
if(ping == true)
{
ipadd = block.get(i)+" is alive!"+"\n";
}
else
{
ipadd = block.get(i)+"\n";
}
System.out.println(ipadd);
}
catch(IOException e)
{
System.out.println(e);
}
}
}
public String getIPadd()
{
return ipadd;
}
}
main method
public class Main {
public static void main(String[] args) {
IPrange scan = new IPrange();
Runnable r = new IPscanner();
IPscanner ipscan = new IPscanner();
String from = "10.200.50.0";
String to = "10.200.50.10";
scan.setFromip(from);
scan.setToip(to);
scan.StrToIP();
scan.calcNetwork();
Thread t1 = new Thread(r);
t1.start();
System.out.println(ipscan.getIPadd()+" I'm here!");
}
}
errors:
I'm here!
Exception in thread "Thread-0" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at testscan.IPscanner.run(IPscanner.java:27)
at java.lang.Thread.run(Thread.java:619)
BUILD SUCCESSFUL (total time: 0 seconds)