ok seguirò i to ituoi consigli per rendere più leggibile il programma. alla fine ho fatto così:
codice:
package javaapplication1;
import java.io.*;
import java.lang.*;
import java.net.*;
import java.util.*;
public class connessione{
public synchronized 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;
boolean x=false;
Vector ipcherispondono=null;
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){
pingati p=new pingati(indirizzo,mioip,altroip,x,ipcherispondono,0,10);
pingati q=new pingati(indirizzo,mioip,altroip,x,ipcherispondono,30,31);
p.start();
q.start();
p.join();
q.join();
System.out.println("il main ha finito");
}
}
}
}
class pingati extends Thread implements Runnable{
InetAddress indirizzo;
byte[]mioip=new byte[4];
int[]altroip=new int[4];
boolean x;
Vector ipcherispondono;
int i;
int j;
int k;
int h;
public pingati(InetAddress indirizzo,byte []mioip,int []altroip,boolean x,Vector ipcherispondono,int i,int j){
this.indirizzo=indirizzo;
this.mioip=mioip;
this.altroip=altroip;
this.x=x;
this.ipcherispondono=ipcherispondono;
this.i=i;
this.j=j;
}
public synchronized void run(){
altroip[0]=(int)mioip[0];
altroip[1]=(int)mioip[1];
for(k=i;k<=j;k++){
for(h=0;h<256;h++){
altroip[2]=k;
altroip[3]=h;
mioip[0]=(byte)altroip[0];
mioip[1]=(byte)altroip[1];
mioip[2]=(byte)altroip[2];
mioip[3]=(byte)altroip[3];
try{
x=indirizzo.getByAddress(mioip).isReachable(8000);
indirizzo=InetAddress.getByAddress(mioip);
}
catch(Exception e){
System.out.println("eccezzione");
}
if(x){
System.out.print("\n"+altroip[0]+"."+altroip[1]+"."+altroip[2]+"."+altroip[3]+" pinga");
} else{System.out.print("\n"+altroip[0]+"."+altroip[1]+"."+altroip[2]+"."+altroip[3]+" non pinga");}
}}}}
solo che l'aoutput non è corretto e non riesco a capire come mai visto che ho messo la parola chiave synchronized
output:
10.0.30.0 non pinga perchè 10.0.0.0 certe volte pinga e certe no?
10.0.0.1 non pinga
10.0.30.1 non pinga
10.0.0.2 non pinga
10.0.30.2 non pinga
10.0.0.3 non pinga
10.0.30.3 non pinga
10.0.0.4 non pinga
10.0.30.4 non pinga
10.0.0.5 pinga
10.0.0.6 non pinga
10.0.30.5 non pinga
10.0.0.7 non pinga
10.0.30.6 non pinga
10.0.0.8 non pinga
10.0.30.7 non pinga
10.0.0.9 non pinga dovrebbe essere 10.0.0.9 a pingare e
10.0.30.8 pinga 10.0.30.8 a non pingare
10.0.0.10 non pinga
10.0.30.9 non pinga
10.0.0.11 non pinga
10.0.30.10 non pinga
10.0.0.12 non pinga
10.0.30.11 non pinga
10.0.0.13 non pinga
10.0.30.12 non pinga
10.0.0.14 non pinga
10.0.30.13 non pinga
10.0.0.15 non pinga
10.0.30.14 non pinga
10.0.0.16 non pinga
10.0.30.15 non pinga
10.0.0.17 non pinga
10.0.30.16 non pinga
10.0.0.18 non pinga
10.0.30.17 non pinga
10.0.0.19 non pinga
10.0.30.18 non pinga
10.0.0.20 non pinga
10.0.30.19 non pinga
10.0.0.21 non pinga
10.0.30.20 non pinga
10.0.0.22 non pinga
10.0.30.21 non pinga
10.0.0.23 non pinga
10.0.30.22 non pinga
10.0.0.24 non pinga
10.0.30.23 non pinga
10.0.0.25 non pinga
10.0.30.24 non pinga
10.0.0.26 non pinga
10.0.30.25 non pinga
10.0.0.27 non pinga
10.0.30.26 non pinga
10.0.0.28 non pinga
10.0.30.27 non pinga
10.0.0.29 non pinga
10.0.30.28 non pinga
10.0.0.30 non pinga
10.0.30.29 non pinga
10.0.0.31 non pinga
10.0.30.30 non pinga
10.0.0.32 non pinga
10.0.30.31 non pinga
10.0.0.33 non pinga
10.0.30.32 non pinga
10.0.0.34 non pinga
10.0.30.33 non pinga
10.0.0.35 non pinga
10.0.30.34 non pinga
10.0.0.36 non pinga
10.0.30.35 non pinga
10.0.0.37 non pinga
10.0.30.36 non pinga
10.0.0.38 non pinga
oltretutto non mi sembra di aver guadagnato chissà cosa in termini di prestazioni