Originariamente inviato da terso88
ciao. innanzitutto mi scuso per gli errori.
ieri ho passato la giornata a vedere la documentazione java.net ma quello che ho non credo fosse utile. detto in parole povere non riesco a capire e a tovare un metodo di una classe per vedere tutti gli ip della rete a cui il mio pc (su cui dovrebbe girare il programma) appartiene. una volta ottenuti questi ip manderò un mex ad ognuno di loro per vedere se hanno laporta 8000 aperta.
spero di essere stato chiaro.
grazie e ciao
Beh... "tutti gli IP" di una rete non è un'informazione così sconosciuta: trattasi di 255 valori (escludo lo 0) che vanno da "x.y.z.1" a "x.y.z.255".
Quello che dovrai fare è testare, per ciascuno di essi, se è fisicamente presente una scheda di rete (basta un ping, ma è "complessa" la gestione della risposta del ping), quindi testare la porta 8000.
Detto con un po' di codice:
codice:
// Ottengo l'IP della mia macchina
InetAddress ia = InetAddress.getLocalHost();
byte[] mioIP = ia.getAddress();
// Costruisco l'inizio del nuovo IP da testare
byte[] altroIP = new byte[4];
altroIP[0] = mioIP[0]; altroIP[1] = mioIP[1]; altroIP[2] = mioIP[2];
// Scorro tutti gli indirizzi della mia rete:
for(int i=1; i<256; i++) {
if (i != mioIP[3]) {
// Evito di fare un ping su me stesso :)
altroIP[3] = i;
if ( faiUnPingA( altroIP ) ) {
// Se true, c'è una scheda di rete per questo IP
testaPorta8000( altroIP );
}
}
}
Ovviamente dovrai implementare i metodi "faiUnPingA()" e "testaPorta8000()".
Ciao.