Java RMI“连接被拒绝/超时”
在阅读Java和RMI时,我曾想过制作一个小型原型,但由于某种原因,我无法让它工作
我启动服务器:没问题
我启动客户:没有立即的问题
它需要很长时间才能“找到”服务器(两者都在我的本地计算机上),当它找到服务器并想要执行某个功能时,我突然出现以下错误:
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)
环境:
Java SDK 1.8
MacOS Sierra 10.12.3
服务器。爪哇
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());
}
}
}
客户。爪哇
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。爪哇
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ICalc extends Remote {
public int add(int param1, int param2) throws RemoteException;
}
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;
}
}
# 1 楼答案
您已将客户端定义为连接到
localhost
,但错误消息表明连接被拒绝到25.71.177.149
我的假设是,服务器绑定到位于
127.0.0.1:1099
的real本地主机,但您的客户端正在尝试建立到25.71.177.149:1099
的连接