我想为许多服务器使用java获得CPU ram可用空间 任何想法。
答案 0 :(得分:1)
根据目标平台的不同,有多种方式:
答案 1 :(得分:0)
我只是一个实习生,但我的解决方案是写一个服务器套接字并在服务器上运行它。 比通过客户端套接字打开连接并询问信息。
我会简单地返回Used Mb或简单地将其转换为%Value。
无论如何,我更愿意使用现有的经过测试的解决方案。
编辑:
这里有一个关于如何获得免费的Max和Used RAM的教程。 http://crunchify.com/java-runtime-get-free-used-and-total-memory-in-java/
EDIT2: 这里是我的理想代码:
服务器部分:
public static void main(String[] args) {
try {
ServerSocket sSocket = new ServerSocket(6969);
Socket socket = sSocket.accept();
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
String str1 = "";
//Add Varaibles you want to return
double ram = 15.0;
while (!str1.equals("stop")) {
str1=dis.readUTF();
//Return Value you need by param
if (str1.equals("getRam")) {
//Add Your calculation here
dout.writeUTF(String.valueOf(ram));
dout.flush();
}
else if(str1.equals("stop")){
dout.writeUTF("stop");
dout.flush();
}
else {
dout.writeUTF("Unknown Command");
dout.flush();
}
}
sSocket.close();
socket.close();
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端部分:
public class Main {
public static void main(String[] args) {
try {
String serverIp = "localhost";
Socket socket = new Socket(serverIp, 6969);
DataInputStream dIn = new DataInputStream(socket.getInputStream());
DataOutputStream dOut= new DataOutputStream(socket.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";
String str2 = "";
dOut.writeUTF("getRam");
//for manual param transmitting
//str = br.readLine();
//dOut.writeUTF(str);
dOut.flush();
str2=dIn.readUTF();
System.out.println("Server response:" + str2);
br.readLine();
} catch (UnknownHostException e) {
e.printStackTrace();
System.out.println(e);
} catch (IOException e) {
e.printStackTrace();
System.out.println(e);
}
}
}
我希望能帮到你。 无论如何,我不认为你可以在没有连接或连接到服务器的情况下获取数据。