2010-11-21 42 views
0

假设路由器的公网IP是92.1.85.179
的电脑与服务器的本地IP 192.168.0.2是
路由器设置转发92.1 .85.179:5678 192.168.0.2:5678麻烦连接到这是一个路由器后面的RMI服务器

在服务器,我有:

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:连接拒绝主机:192.168.0.2;

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

任何输入将不胜感激。

回答

1

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