cs_Yenapa
Messages postés67Date d'inscriptionsamedi 12 juillet 2003StatutMembreDernière intervention26 juin 2009 2 déc. 2004 à 15:54
J'ai trouvé une solution.
C'est lent, c'est mal programmé, mais ca marche
En fait l'idée c'est d'appeler net view, qui donne les noms des pc du reseau, puis de faire un ping pour recuperer leurs adresses.
Je n'ai pas reussi a recupéré directement la sortie de ces programmes dans java, donc je passe par un fichier temporaire... si quelqu'un a une solution de ce coté la ca m'interesse.
Voici le code:
import java.io.*;
import java.util.Vector;
public class Principal {
static private Vector ConnectedComputersName = new Vector();
static private Vector Computers = new Vector();
static public void main(String Args[]) {
try {
Process p;
p = Runtime.getRuntime().exec("c:\\test.bat");
boolean exited = false;
while (!exited) {
try {
p.exitValue();
exited = true;
} catch(Exception e) {
if(e.getMessage() != "process has not exited") {
exited = false;
}
}
}
p = null;
File f = new File(System.getenv("TEMP")+"/serverlist.log");
if(f.exists()) {
BufferedReader inputStream = new BufferedReader(new FileReader(f));
Vector v = new Vector();
String var = inputStream.readLine();
while (var != null) {
v.add(var);
var = inputStream.readLine();
}
inputStream.close();
inputStream = null;
//System.out.println("Effacement du fichier: " + f.delete());
//System.out.println("Existence du fichier: " + f.exists());
for (int n=3;n<v.size()-2; n++) {
ConnectedComputersName.add(((String)(v.elementAt(n))).substring(2).trim());
}
for (int n=0; n < ConnectedComputersName.size();n++) {
Computers.add(new Regroup((String)ConnectedComputersName.elementAt(n), doPing((String)ConnectedComputersName.elementAt(n))));
}
} else {
System.err.println("Les autres ordinateurs n'ont pu etre trouvés");
}
} catch (IOException e) {
System.out.println("Exception: " + e.getMessage());
} catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
}
for (int n = 0; n < Computers.size(); n++) {
((Regroup)Computers.elementAt(n)).Show();
}
}
static private String doPing(String server) {
String ip = null;
try {
Process p = Runtime.getRuntime().exec("c:\\myPing.bat " + server);
boolean exited = false;
while (!exited) {
try {
p.exitValue();
exited = true;
} catch(Exception e) {
if(e.getMessage() != "process has not exited") {
exited = false;
}
}
}
p = null;
File f = new File(System.getenv("TEMP")+"/pingresult.log");
if(f.exists()) {
BufferedReader inputStream = new BufferedReader(new FileReader(f));
Vector v = new Vector();
String var = inputStream.readLine();
while (var != null) {
v.add(var);
var = inputStream.readLine();
}
inputStream.close();
inputStream = null;
//System.out.println("Effacement du fichier: " + f.delete());
//System.out.println("Existence du fichier: " + f.exists());
if (v.size() != 2) {
ip = parseIP((String)v.elementAt(2));
} else ip = null;
} else {
System.err.println("Ping echoué pour " + server);
}
} catch(IOException e) {System.out.println("Exception " + e);}
return ip;
}