我有这个 RMI 服务器,我正尝试从家里连接到它,但我收到此错误消息:
java.rmi.ConnectException:连接拒绝主机:XX.XXX.XX.XXX;嵌套异常是:java.net.ConnectException:连接超时:连接
public GUILogic(GUI gui) throws NotBoundException, MalformedURLException, RemoteException{
super();
this.gui = gui;
String objectname = "chatter";
String url = "rmi://" + hostname + "/" + objectname;
cf = (ChatFront) Naming.lookup(url);
}
当我尝试 http://www.canyouseeme.org/ 时,我已将端口转发到端口 1099(在服务器计算机上) ,我找到了端口。我的计算机和服务器上的每个防火墙都已关闭。如果我将它设置在 LAN 上,服务器工作正常。
可能是什么问题?
最佳答案
我遇到了完全相同的问题。
我通过设置一个主机名来修复它,它可以被服务器(在 NAT 之后)和客户端解析。
然后,我在 java 命令行中将此 arg 添加到服务器:
-Djava.rmi.server.hostname=yourhostname
它奏效了。
在服务器端,一个简单的 getRegistry 工作得很好。
Registry registry = LocateRegistry.getRegistry();
不要忘记 nat 注册表和导出的对象端口。
关于java - NAT 连接后面的 RMI 服务器拒绝托管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9036978/