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: p>
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 p>
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>
}
} p>
}
}