ciao a tutti. ho scritto questo programma per avere più flussi di esecuzione, ma a quanto pare sembra che funzioni uno thread alla volta e non riesco a capire il perchè.
codice:
package javaapplication1;
import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;
class pingati031 extends connessione implements Runnable{
public void run(){}
public Vector ipdapingare031(byte[]mioip,int[]altroip,boolean x,int i,int j,InetAddress indirizzo,Vector ipcherispondono031)throws Exception{
for(i=0;i<10;i++){
for(j=0;j<256;j++){
altroip[2]=i;
altroip[3]=j;
mioip[0]=(byte)altroip[0];
mioip[1]=(byte)altroip[1];
mioip[2]=(byte)altroip[2];
mioip[3]=(byte)altroip[3];
x=indirizzo.getByAddress(mioip).isReachable(5000);
indirizzo=InetAddress.getByAddress(mioip);
if(x){
System.out.print("\n"+altroip[0]+"."+altroip[1]+"."+altroip[2]+"."+altroip[3]+" pinga");
ipcherispondono031.add(indirizzo);
}
}
}return ipcherispondono031;}}
class pingati3263 extends connessione implements Runnable{
public void run(){}
public Vector ipdapingare3263(byte[]mioip,int[]altroip,boolean x,int i,int j,InetAddress indirizzo,Vector ipcherispondono3263)throws Exception{
for(i=10;i<12;i++){
for(j=0;j<256;j++){
altroip[2]=i;
altroip[3]=j;
mioip[0]=(byte)altroip[0];
mioip[1]=(byte)altroip[1];
mioip[2]=(byte)altroip[2];
mioip[3]=(byte)altroip[3];
x=indirizzo.getByAddress(mioip).isReachable(5000);
indirizzo=InetAddress.getByAddress(mioip);
if(x){
System.out.print("\n"+altroip[0]+"."+altroip[1]+"."+altroip[2]+"."+altroip[3]+" pinga");
ipcherispondono3263.add(indirizzo);
}
}
}return ipcherispondono3263;}}
public class connessione extends Thread {
public static void main(String[]args)throws Exception{
InetAddress indirizzo=null;
NetworkInterface rete=null;
byte []mioip=new byte[4];
int[] altroip=new int[4];
short s;
int i=0;
int j=0;
int k;
boolean x=false;
boolean y;
String nome;
Vector ipcherispondono031= new Vector();
Vector ipcherispondono3263=new Vector();
Vector stampanti=new Vector();
mioip=indirizzo.getLocalHost().getAddress();
rete=NetworkInterface.getByInetAddress(indirizzo.getLocalHost());
System.out.println(rete);
List<InterfaceAddress> indirizzi = rete.getInterfaceAddresses();
for (InterfaceAddress elem : indirizzi) {
System.out.println(elem.toString());
System.out.println(elem.getNetworkPrefixLength());
s=elem.getNetworkPrefixLength();
if(s==16){
altroip[0]=(int)mioip[0];
altroip[1]=(int)mioip[1];
pingati031 e=new pingati031();
pingati3263 p=new pingati3263();
e.start();
p.start();
e.ipdapingare031(mioip, altroip, x, i, j, indirizzo, ipcherispondono031);
p.ipdapingare3263(mioip, altroip, x, i, j, indirizzo, ipcherispondono3263);
}
}
}
}
non riesco a capire cosa ci sia di sbagliato.