用于远程java服务器的CPU ram和可用空间
我想用java为许多服务器提供CPU ram可用空间用于远程java服务器的CPU ram和可用空间,java,cpu,ram,Java,Cpu,Ram,我想用java为许多服务器提供CPU ram可用空间 任何想法。我只是一名实习生,但我的解决方案是编写一个服务器套接字并在服务器上运行它。 而不是通过客户端套接字打开连接并询问信息 然后我将simpel返回使用过的Mb或简单地将其转换为%值 无论如何,我宁愿使用现有的和经过测试的解决方案 编辑: 这里有一个关于如何获得免费、最大和已用RAM的教程。 编辑2: 下面是我的想法代码: 服务器部件: public static void main(String[] args) { try
任何想法。我只是一名实习生,但我的解决方案是编写一个服务器套接字并在服务器上运行它。 而不是通过客户端套接字打开连接并询问信息 然后我将simpel返回使用过的Mb或简单地将其转换为%值 无论如何,我宁愿使用现有的和经过测试的解决方案 编辑: 这里有一个关于如何获得免费、最大和已用RAM的教程。 编辑2: 下面是我的想法代码: 服务器部件:
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