internet上的Java RMI连接

internet上的Java RMI连接,java,rmi,rmiregistry,Java,Rmi,Rmiregistry,我正在尝试从托管在不同网络上的服务器获取远程对象。我可以在同一台机器和同一个网络上连接,但当我尝试从不同的网络获取它时,我得到: 拒绝主机连接:192.168.1.131;嵌套异常为:java.net.ConnectException:连接超时:连接 似乎查找功能正在错误的网络上搜索。我试图使用System.setProperty,但它不起作用。代码如下: 服务器 public class Main { public static void main(String[] args) {

我正在尝试从托管在不同网络上的服务器获取远程对象。我可以在同一台机器和同一个网络上连接,但当我尝试从不同的网络获取它时,我得到:

拒绝主机连接:192.168.1.131;嵌套异常为:java.net.ConnectException:连接超时:连接

似乎查找功能正在错误的网络上搜索。我试图使用System.setProperty,但它不起作用。代码如下:

服务器

 public class Main {

    public static void main(String[] args) {
        try{
            System.out.println("Init server...\n");
            TestInterface test = new TestImplement();


            System.setProperty("java.rmi.server.hostname", "95.247.x.x");
            System.out.println("Reg RMI...\n");
            Registry rmiRegistry = LocateRegistry.createRegistry(5555);
            rmiRegistry.rebind("Test" , test);
            System.out.println("Reg completed!\n");
            }catch(Exception e){
                e.printStackTrace();
            }
        }

}
客户端

...
registryRMI = LocateRegistry.getRegistry("95.247.x.x",5555);
TestInterface testClient = (TestInterface)registryRMI.lookup("Test");
...
我是否也需要在客户端jar中设置
java.rmi.server.hostname

TestInterface test = new TestImplement();
System.setProperty("java.rmi.server.hostname", "95.247.x.x");
在导出任何远程对象之前,需要设置
java.rmi.server.hostname
。事后再做太晚了

System.setProperty("java.rmi.server.hostname", "95.247.x.x");
TestInterface test = new TestImplement();
在导出任何远程对象之前,需要设置
java.rmi.server.hostname
。事后再做太晚了

System.setProperty("java.rmi.server.hostname", "95.247.x.x");
TestInterface test = new TestImplement();

检查您是否能够在5555端口上远程登录。问题是,为什么客户端尝试连接
192.168.1.131
。。可能注册表会将实例绑定到该地址。。你也启动了吗?@gusto2“Registry将实例绑定到该地址”完全没有意义。应用程序通过注册表将名称绑定到实例。
Registry.bind()
操作中没有地址的概念。没有地址的副本,因为这是在询问如何配置RIM以避免此类问题。请检查您是否能够在5555端口上远程登录。问题是客户端为什么尝试连接
192.168.1.131
。。可能注册表会将实例绑定到该地址。。你也启动了吗?@gusto2“Registry将实例绑定到该地址”完全没有意义。应用程序通过注册表将名称绑定到实例。在
注册表.bind()操作中没有地址的概念。不是重复的,因为这是在询问如何配置RIM以避免此类问题。现在客户端获得了正确的IP,但连接仍然超时。“拒绝连接到主机:95.247.x.x;嵌套异常为:java.net.ConnectException:连接超时:connect”我在路由器中完成了端口转发,以便它正确地将外部端口映射到内部端口。仍然收到此错误。不,您现在收到一个新错误。它没有“静止”的意思。现在的问题是您没有正确进行端口转发,或者95.247.x.x在防火墙后面,或者其他一些网络连接问题。问题不是防火墙,因为如果我在服务器
java.rmi.server.hostname“bla”上设置
在客户机上,我得到了
java.net.UnknownHostException:blabla
这样客户机就可以重新获取注册表或至少第一次连接,之后就无法继续进行连接超时。现在,客户机获得了正确的IP,但连接仍然超时。“拒绝连接到主机:95.247.x.x;嵌套异常为:java.net.ConnectException:连接超时:connect”我在路由器中完成了端口转发,以便它正确地将外部端口映射到内部端口。仍然收到此错误。不,您现在收到一个新错误。它没有“静止”的意思。现在的问题是您没有正确进行端口转发,或者95.247.x.x在防火墙后面,或者其他一些网络连接问题。问题不是防火墙,因为如果我在服务器
java.rmi.server.hostname“bla”上设置
在客户机上,我得到了
java.net.UnknownHostException:blabla
,因此客户机能够重新获取注册表或至少第一次连接,之后由于连接超时而无法进行。