CPU内存和远程服务器的可用空间java
答
我只是一名培训生,但我的解决方案是编写一个服务器套接字并在服务器上运行它。 通过客户端套接字打开连接并询问信息。
比我会simpel返回使用MB或简单地将其转换为%值。
无论如何,我宁愿使用现有的和经过测试的解决方案。
编辑:
这里一个教程就如何获得免费的,Max和使用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);
}
}
}
我希望帮助你。 无论如何,我不认为你可以在没有连接或连接到服务器的情况下获取数据。
答
,这具体取决于目标平台上,有很多种方法:
- 让每个系统上运行的Java客户端将收集要求此信息,然后有一个收集服务器,并显示所有这些信息。这是大多数平*立的解决方案,但要求您编写客户端和服务器,并在每个系统上安装客户端。
- 如果在平台上支持SSH,则可以使用Java程序登录到每个系统并使用命令行实用程序来查询资源。但是,这需要您为每个系统提供证书或可用的SSH密钥。
- 在目标平台上使用NET-SNMP(如果支持并启用资源收集)。然后Java程序可以查询SNMP代理来收集资源使用情况。您需要一个库来与SNMP代理交谈。您可以为此目的使用SNMP4J或AdventNet。
+0
请你能给我一个例子 – oulaya
到目前为止您尝试过了什么? – dunni
你有什么试过,你有什么麻烦?我建议你使用一个工具,它已经为你做了这个,你可以使用谷歌研究。 –
我试过Process c = Runtime.getRuntime()。exec(commande);但我有我的本地机器的系统inf我至少有其他服务器的RAM cpu – oulaya