He creado un fragmento de código que toma una dirección IP (del método principal en otra clase) y luego recorre un rango de direcciones IP haciendo ping a cada una de ellas a medida que avanza. Tengo una interfaz gráfica de usuario en esto y estaba fallando (de ahí que haya hecho el multihilo. Mi problema es que ya no puedo tomar como argumento la dirección IP en mi código de ping. He buscado en todas partes para esto y parece que no se puede encontrar una manera de eludir esto. ¿Hay alguna manera de que un método invocable tome argumentos? Si no, ¿hay alguna otra forma de lograr lo que intento?¿Hay alguna manera de tomar un argumento en un método invocable?
muestra de mi código:.
public class doPing implements Callable<String>{
public String call() throws Exception{
String pingOutput = null;
//gets IP address and places into new IP object
InetAddress IPAddress = InetAddress.getByName(IPtoPing);
//finds if IP is reachable or not. a timeout timer of 3000 milliseconds is set.
//Results can vary depending on permissions so cmd method of doing this has also been added as backup
boolean reachable = IPAddress.isReachable(1400);
if (reachable){
pingOutput = IPtoPing + " is reachable.\n";
}else{
//runs ping command once on the IP address in CMD
Process ping = Runtime.getRuntime().exec("ping " + IPtoPing + " -n 1 -w 300");
//reads input from command line
BufferedReader in = new BufferedReader(new InputStreamReader(ping.getInputStream()));
String line;
int lineCount = 0;
while ((line = in.readLine()) != null) {
//increase line count to find part of command prompt output that we want
lineCount++;
//when line count is 3 print result
if (lineCount == 3){
pingOutput = "Ping to " + IPtoPing + ": " + line + "\n";
}
}
}
return pingOutput;
}
}
IPtoPing solía ser el argumento de que fue tomado
así que .... esto no funcionará si pasa la invocable como parámetro a otra función que trata de repetir Callable frente a una serie de argumentos que se aprobó ... – Michael
¿Es esto una declaración o una pregunta? De cualquier manera, no puedo entender lo que estás diciendo/preguntando. –