rmi java程序不是预期的输出

rmi java程序不是预期的输出,java,Java,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 cal

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;
   }

}
server.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) {
           }
       }
 }
client.java

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()。或者,如果您只需要行,则不需要
扫描仪
;使用
BufferedReader
readLine()

当您尝试使用域名时,是否可以给出引发何种异常的堆栈跟踪?另外,顺便说一句,如果你确实得到一个异常,用异常做一些事情(比如记录它),这样就更容易调试程序。如果我使用ping www.google.com,它会显示我为ping命令得到的输出。它忽略了www.google.com