长话短说-我正在尝试使用Windows在单独的计算机上与客户端和服务器一起运行RMI应用程序。

服务器中的简化代码为:

System.setProperty("java.rmi.server.hostname", "192.168.x.x");
Registry reg = LocateRegistry.createRegistry(1099);
RemoteFoo foo = new RemoteFoo();
reg.rebind("Foo", foo);


在客户端中,我有:

reg = LocateRegistry.getRegistry("192.168.x.x", 1099);
RemoteFooInterface foo = (RemoteFooInterface) reg.lookup("Foo");


我得到的异常是在“查找拒绝连接的主机:192.168.x.x;嵌套的异常是连接超时:连接”中。

我从有类似问题的人那里读到一些关于StackOverflow的问题,这就是为什么我添加一行来更改System属性,以便将正确的IP嵌入到客户端使用的存根中,但仍然无法正常工作。
如果有人可以为我提供其他可以尝试的建议,我将非常感激。

最佳答案

服务器上的防火墙可能阻止了访问。

确保可以连接到端口(对于您的情况为1099)。例如,从客户端计算机上,打开
命令提示符cmd.exe并键入telnet 192.168.x.x 1099(这将连接到服务器上的端口1099)。如果显示“正在连接到...”,则该端口不可用,很可能是客户端计算机无法访问服务器。尝试ping 192.168.x.x(如果服务器的防火墙允许ICMP,它将起作用)。

尝试修复防火墙,以允许通过端口1099进行连接,或者更好地(暂时)将其禁用,然后重试。清除后,运行RMI客户端

08-06 18:57