簡體   English   中英

rmi java程序未預期輸出

[英]rmi java program not expected output

rmi程序在運行時會詢問命令。

如果我提供了ipconfig,它可以工作,但不能ping www.google.com和powercfg / batteryreport等。如果輸入命令之間有空格或斜杠,我認為它不起作用。

任何幫助,將不勝感激

si.java

 import java.rmi.*;
 import java.net.*;
 import java.io.*; 

 public interface si extends Remote{
      public String calc(String com) throws RemoteException,IOException;
 }

imp.java

  import java.rmi.*;
  import java.rmi.server.*;
  import java.util.*;
  import java.net.*;
  import java.io.*;

  public class imp extends UnicastRemoteObject implements si{

  imp() throws RemoteException,IOException {
      super();
  }

  public String calc(String com) throws IOException{
      String inputLine;
      Runtime r=Runtime.getRuntime();
      Process p=r.exec(com);
      BufferedReader in=new BufferedReader(new InputStreamReader(p.getInputStream()));

      while((inputLine = in.readLine()) != null) {
          System.out.println(inputLine);
          //pingResult += inputLine;
      }

      return inputLine;
   }

}

服務器.java

  import java.rmi.*;
  import java.rmi.registry.*;

  public class server{
       public static void main(String args[]){
           try{
               si stub=new imp();
               Naming.rebind("rmi://localhost:5000/example",stub);
           } catch(Exception e) {
           }
       }
 }

客戶端程序

import java.rmi.*;
import java.util.*;
public class client{
    public static void main(String args[]){
       try{
             si a=(si)Naming.lookup("rmi://localhost:5000/example");
             Scanner s=new Scanner(System.in);
             System.out.println("enter command");
             String com=s.next();
             System.out.println(a.calc(com));
             } catch(Exception e){
             }
      }
}

Scanner默認情況下解析空格分隔的標記,因此您僅獲取輸入行的第一部分並將其發送到服務器。 服務器只能執行您發送的內容。

使用Scanner.nextLine() 或者,如果您只需要線條,則不需要Scanner 使用BufferedReaderreadLine()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM