Java 爪哇RMI“;“连接被拒绝/超时”;
在阅读Java和RMI时,我曾想过制作一个小型原型,但由于某种原因,我无法让它工作 我启动服务器:没问题Java 爪哇RMI“;“连接被拒绝/超时”;,java,connection,rmi,Java,Connection,Rmi,在阅读Java和RMI时,我曾想过制作一个小型原型,但由于某种原因,我无法让它工作 我启动服务器:没问题 我启动客户机:没有即时问题。 它需要很长时间才能“找到”服务器(两者都在我的本地计算机上),当它找到服务器并想要执行某个功能时,我突然出现以下错误: Connection refused to host: 25.71.177.149; nested exception is: java.net.ConnectException: Operation timed out (Connectio
我启动客户机:没有即时问题。
它需要很长时间才能“找到”服务器(两者都在我的本地计算机上),当它找到服务器并想要执行某个功能时,我突然出现以下错误:
Connection refused to host: 25.71.177.149; nested exception is:
java.net.ConnectException: Operation timed out (Connection timed out)
Connection refused to host: 192.168.10.248; nested exception is:
java.net.ConnectException: Operation timed out (Connection timed out)
更新:重新启动MacBook后,出现以下错误:
Connection refused to host: 25.71.177.149; nested exception is:
java.net.ConnectException: Operation timed out (Connection timed out)
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 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;
}
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;
}
}
您已将客户端定义为连接到
localhost
,但错误消息表明连接被拒绝到25.71.177.149
我的假设是,服务器绑定到位于
127.0.0.1:1099
的真实本地主机,但您的客户端正在尝试建立到25.71.177.149:1099
的连接这里讨论的IP不是本地IP。您试图连接到哪个IP?本地,因为它是本地协议。在您的整个工作区中搜索,此IP地址来自哪里?或者这是您的公共ip?我已经检查了我的/etc/hosts
文件,但它是“空的”(除了默认记录之外没有其他记录),当我完全断开我的机器与RMI FAQ的webSee项目A.1的连接时,它也会这样做。注意:这里没有“拒绝连接”。存在“连接被拒绝”和“连接超时”。您必须准确地报告错误消息,并且无论何时在引号中添加某个内容,都要确保它是一个准确的引号,不仅在引号中,而且在生活中也是如此。当我输入或忽略127.0.0.1
时,也会发生同样的情况。除了将客户端连接设置为127.0.0.1
,您还可以尝试使用此参数重新启动JVM吗-Djava.rmi.server.hostname=127.0.0.1
这可能会覆盖绑定IP。愚蠢的问题。。。你试过把它关掉再打开吗?我刚刚将您的所有代码导入到我的工作区,服务器和客户端都在这里工作,没有任何问题。我已多次重新启动代码,因此知道更改主机名或忽略主机名无关紧要,但我可以尝试重新启动我的机器。。。给我一个提示:连接拒绝主机:192.168.10.248;嵌套异常为:java.net.ConnectException:操作超时(连接超时)