【发布时间】:2017-08-24 14:38:01
【问题描述】:
我第一次尝试使用 RMI,我对 java 了解不多,只是基础知识。 所以对于初学者来说,我想用 4 个基本算术运算(+ - * /)编写一个简单的计算器,在终端(linux)上执行时:
java CalculatorClient <host> 1 + 2
因此 argv[0] 是主机,我想将 argv[] 传递给服务器,以便它可以远程计算并返回值。
我确实得到了基本的工作,这段代码客户端只收到服务器被访问的次数:
// CounterServerCaller.java
import java.rmi.*;
public class CounterServerCaller {
public static void main(String args[]) {
try {
Counter c = new CounterServer();
Naming.rebind("Counter", c);
System.out.println("Counter ready.");
}
catch (Exception e) {
System.out.println("Erro:"+e.getMessage());}
}
}
.
// CounterServer.java
import java.rmi.*;
import java.rmi.server.*;
public class CounterServer extends UnicastRemoteObject {
private int value;
public int nextValue() throws RemoteException {
return value++;
}
public CounterServer() throws RemoteException {
super();
value = 0;
}
}
.
// CounterCliente.java
import java.rmi.*;
public class CounterClient {
public static void main(String args[]) {
try {
String host = args[0];
Counter c = (Counter)
Naming.lookup("rmi://"+host+"/Contador");
System.out.println("Contador: "+c.nextValue());
} catch (Exception e) {
System.out.println("Erro: "+e.getMessage());
}
}
}
.
// Counter.java
import java.rmi.*;
public interface Counter extends Remote {
int nextValue() throws RemoteException;
}
我确实搜索了一个答案,但我只能找到非常复杂的代码,我认为回调不是最简单的解决方案。也许我使用了错误的关键词进行搜索?请问有人能解释一下这个问题吗?
【问题讨论】:
-
这里没有任何东西可以将
argv传递给服务器。
标签: java server client rmi argv