Red de conocimiento informático - Conocimiento informático - Cómo obtener todas las direcciones IP en el código java de LAN

Cómo obtener todas las direcciones IP en el código java de LAN

1. Obtenga el segmento LAN, que puede ser determinado por la IP de su propia máquina (también puede obtener manualmente la IP del host-CMD-ipconfig /all)

2. Según el tipo de IP, recorra una vez la dirección IP en la clase LAN

JAVA, puede obtener todas las IP en la LAN ejecutándola directamente después de la compilación. Específicamente, puede escribir el código correspondiente y llamar. hágalo usted mismo

El código es el siguiente:

paquete bean

importar java.io.*

importar java. util.*;

public class Ip{

static public HashMap ping; //El resultado establecido después del ping

public HashMap getPing(){ //Usado para obtener el conjunto de resultados después del ping

return ping

}

//El número de subprocesos actuales para evitar que demasiados subprocesos destruyan la computadora

p>

static int threadCount = 0;

IP pública( ) {

ping = new HashMap()

}

<; p>public void Ping(String ip) lanza una excepción{

// Hasta 30 subprocesos

while(threadCount>30)

Thread.sleep(50

threadCount +=1

PingIp p = nuevo PingIp(ip

p.start(); }

public void PingAll() throws Exception{

//Primero obtenga la IP de la máquina y obtenga el segmento de red

InetAddress host = InetAddress.getLocalHost ();

Cadena hostAddress = host.getHostAddress();

int k=0

k=hostAddress.lastIndexOf("."); /p>

String ss = hostAddress.substring(0,k+1);

for(int i=1;i <=255;i++){ //Para todas las IP de LAN

String iip=ss+i;

Ping(iip)

}

//Esperar a que finalicen todos los pings

while(threadCount>0)

Thread.sleep(50);

}

public static void main(String[] args) lanza Excepción{

Ip ip= nueva Ip();

ip.PingAll()

java.util.Set entradas = ping.entrySet();

Iterador iter=entries.iterator();

Cadena k

while(iter.hasNext()){

Mapa .Entrar

y entrada=(Map.Entry)iter.next();

String key=(String)entry.getKey()

String value=(String)entry.getValue(

if(value.equals("true"))

System.out.println(key+"-->"+value); }

}

clase PingIp extiende Thread{

ip de cadena pública; // IP

PingIp pública(ip de cadena){

this.ip=ip;

}

public void run(){

intenta{

Proceso p= Runtime.getRuntime().exec ("ping "+ip+ " -w 300 -n 1");

InputStreamReader ir = new InputStreamReader(p.getInputStream()); p>LineNumberReader input = new LineNumberReader (ir);

//Leer la línea de resultado

for (int i=1; i <7; i++)

input.readLine();

Cadena línea= input.readLine();

if (line.length() <17 || line.substring(8,17). igual("se agotó el tiempo de espera"))

ping.put(ip,"false");

else

ping.put(ip,"true"); );

//El hilo termina

threadCount -= 1

}catch (IOException e){}

}

}

} p>

}

}