CPU内存和远程服务器的可用空间java

问题描述:

我想获得CPU内存与Java的许多服务器可用空间 任何想法。CPU内存和远程服务器的可用空间java

+0

到目前为止您尝试过了什么? – dunni

+0

你有什么试过,你有什么麻烦?我建议你使用一个工具,它已经为你做了这个,你可以使用谷歌研究。 –

+0

我试过Process c = Runtime.getRuntime()。exec(commande);但我有我的本地机器的系统inf我至少有其他服务器的RAM cpu – oulaya

我只是一名培训生,但我的解决方案是编写一个服务器套接字并在服务器上运行它。 通过客户端套接字打开连接并询问信息。

比我会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); 

     } 

    } 

} 

我希望帮助你。 无论如何,我不认为你可以在没有连接或连接到服务器的情况下获取数据。

+0

谢谢,但问题是我想要一个简单的代码本地,因为我将使用junit后做我的测试 – oulaya

+0

但是什么是你的服务器连接? – Ice

,这具体取决于目标平台上,有很多种方法:

  • 让每个系统上运行的Java客户端将收集要求此信息,然后有一个收集服务器,并显示所有这些信息。这是大多数平*立的解决方案,但要求您编写客户端和服务器,并在每个系统上安装客户端。
  • 如果在平台上支持SSH,则可以使用Java程序登录到每个系统并使用命令行实用程序来查询资源。但是,这需要您为每个系统提供证书或可用的SSH密钥。
  • 在目标平台上使用NET-SNMP(如果支持并启用资源收集)。然后Java程序可以查询SNMP代理来收集资源使用情况。您需要一个库来与SNMP代理交谈。您可以为此目的使用SNMP4J或AdventNet。
+0

请你能给我一个例子 – oulaya