[英]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
; 使用BufferedReader
和readLine()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.