【问题标题】:Trouble connecting to an RMI server which is behind a router无法连接到路由器后面的 RMI 服务器
【发布时间】:2010-11-21 00:02:59
【问题描述】:

假设路由器的公共 IP 是 92.1.85.179
有服务器的电脑本地IP为192.168.0.2
路由器设置为将 92.1.85.179:5678 转发到 192.168.0.2:5678

在我拥有的服务器中:

System.setProperty( "java.rmi.server.hostname" , "92.1.85.179" );
Registry registry = LocateRegistry.createRegistry( 5678 );
registry.rebind( "TheWebServer" , webServerInt );

客户有:

Registry registry = LocateRegistry.getRegistry( "92.1.85.179" , 5678 );
server = (WebServerInterface) registry.lookup( "TheWebServer" );

当客户端位于服务器本地的网络上时,一切正常。当客户端在本地网络之外时,它会得到 java.rmi.ConnectException: Connection denied to host: 192.168.0.2;

很明显,服务器给客户端的 IP 是 192.168.0.2,因为它没有出现在代码中,我认为 System.setProperty( "java.rmi.server.hostname" , "92.1.85.179" ); 应该改变。

任何意见将不胜感激。

【问题讨论】:

    标签: java rmi router nat


    【解决方案1】:

    您还需要在端口 5678 上导出远程对象,并且需要在导出任何远程对象之前设置 java.rmi.server.hostname。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 2011-05-05
      • 2013-03-20
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多