麻烦连接到这是一个路由器后面的RMI服务器
问题描述:
假设路由器的公网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");
应该改变。
任何输入将不胜感激。
答
您还需要在端口5678上导出远程对象,并且在导出任何远程对象之前需要设置java.rmi.server.hostname。