阅读Java和RMI,我想要制作一个小型Prototype,但由于某些原因我无法让它工作。
我启动服务器:没问题
我启动客户:没有直接问题。
它需要很长时间才能发现"服务器(都在我的本地机器上),当它找到服务器并想要执行一个函数时,我突然得到这个错误:
Connection refused to host: 25.71.177.149; nested exception is:
java.net.ConnectException: Operation timed out (Connection timed out)
更新:重新启动MacBook后,我收到此错误:
Connection refused to host: 192.168.10.248; nested exception is:
java.net.ConnectException: Operation timed out (Connection timed out)
ENV:
Java SDK 1.8
MacOS Sierra 10.12.3
Server.java
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class server {
public static void main(String[] args) {
try {
Registry reg = LocateRegistry.createRegistry(1099);
Calc calc = new Calc();
reg.rebind("calc", calc);
System.out.println("Server ready...");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Client.java
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
public static void main(String[] args) {
try {
Registry reg = LocateRegistry.getRegistry("localhost", 1099);
System.out.println(req.list()[0]); // Outputs "calc"
ICalc calc = (ICalc) reg.lookup("calc");
System.out.println("1 + 1 = " + calc.add(5,10));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
ICalc.java
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ICalc extends Remote {
public int add(int param1, int param2) throws RemoteException;
}
Calc.java
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Calc extends UnicastRemoteObject implements ICalc{
public Calc() throws RemoteException{
}
public int add(int param1, int param2) throws RemoteException {
return 0;
}
}
答案 0 :(得分:0)
您已将客户端定义为连接到localhost
,但错误消息指出连接已被拒绝25.71.177.149
。
我的假设是服务器绑定到127.0.0.1:1099
的真实本地主机,但您的客户端正在建立与25.71.177.149:1099
的连接