У меня есть функция Java, которая берет IP-адрес сервера и проверяет состояние определенной службы Windows на этом сервере (запущен или остановлен).При проверке состояния службы на сервере, на котором выполняется код, он запускается за считанные секунды.Но, при проверке состояния службы на другом сервере (удаленном сервере) в том же домене, это занимает много времени.
Есть ли лучший способ выполнить эту задачу?Ниже приведена функция, которую я использую.
public boolean checkService(String PSIP) {
try {
Process p = Runtime.getRuntime().exec("sc \\\\" + PSIP + " query smpolicysrv");
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
//System.out.println(line+"\n");
if (line.trim().startsWith("STATE"))
{
if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("1")) {
System.out.println("Stopped");
return false;
} else
if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("2"))
System.out.println("Startting....");
else
if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("3"))
System.out.println("Stopping....");
else
if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("4")) {
System.out.println("Running");
return true;
}
}
line = reader.readLine();
}
} catch (IOException e1) {}
return false;
}